16

CSVファイルに数百の列があるsurveymonkeyで作成された大規模な調査を分析しようとしていますが、ヘッダーが2行にまたがっているため、出力形式を使用するのは困難です。

  • 分析を管理できるように、CSVファイルのヘッダーを管理する簡単な方法を見つけた人はいますか?
  • 他の人はSurveymonkeyの結果をどのように分析しますか?

ありがとう!

4

7 に答える 7

10

Surveymonkey から R に適合する便利な形式でエクスポートできます。「高度なスプレッドシート形式」のダウンロード応答を参照してください。

サーベイモンキーのエクスポート

于 2012-04-20T14:41:20.013 に答える
6

最後に私がしたことは、V1、V2などのラベルが付いたlibreofficeを使用してヘッダーを印刷し、ファイルを次のように読み込んだことです。

 m1 <- read.csv('Sheet1.csv', header=FALSE, skip=1)

次に、m1 $ V10、m1$V23などに対して分析を行いました。

複数の列の混乱を回避するために、次の小さな関数を使用しました

# function to merge columns into one with a space separator and then
# remove multiple spaces
mcols <- function(df, cols) {
    # e.g. mcols(df, c(14:18))
        exp <- paste('df[,', cols, ']', sep='', collapse=',' )
        # this creates something like...
        # "df[,14],df[,15],df[,16],df[,17],df[,18]"
        # now we just want to do a paste of this expression...
        nexp <- paste(" paste(", exp, ", sep=' ')")
        # so now nexp looks something like...
        # " paste( df[,14],df[,15],df[,16],df[,17],df[,18] , sep='')"
        # now we just need to parse this text... and eval() it...
        newcol <- eval(parse(text=nexp))
        newcol <- gsub('  *', ' ', newcol) # replace duplicate spaces by a single one
        newcol <- gsub('^ *', '', newcol) # remove leading spaces
        gsub(' *$', '', newcol) # remove trailing spaces
}
# mcols(df, c(14:18))

間違いなく誰かがこれをきれいにすることができるでしょう!

私が使用したリッカートのような尺度を整理するために:

# function to tidy c('Strongly Agree', 'Agree', 'Disagree', 'Strongly Disagree')
tidylik4 <- function(x) {
  xlevels <- c('Strongly Disagree', 'Disagree', 'Agree', 'Strongly Agree')
  y <- ifelse(x == '', NA, x)
  ordered(y, levels=xlevels)
}

for (i in 44:52) {
  m2[,i] <- tidylik4(m2[,i])
}

間違いなくこれが再び登場するので、コメントしてください!

于 2011-10-27T10:59:20.553 に答える
4

これはかなり頻繁に処理する必要があり、ヘッダーを 2 つの列に配置するのは少し面倒です。この関数はその問題を修正し、対処するヘッダーが 1 行だけになるようにします。また、マルチパンチの質問に参加するので、上から下へのスタイルの名前付けができます。

#' @param x The path to a surveymonkey csv file
fix_names <- function(x) {
  rs <- read.csv(
    x,
    nrows = 2,
    stringsAsFactors = FALSE,
    header = FALSE,
    check.names = FALSE, 
    na.strings = "",
    encoding = "UTF-8"
  )

  rs[rs == ""] <- NA
  rs[rs == "NA"] <- "Not applicable"
  rs[rs == "Response"] <- NA
  rs[rs == "Open-Ended Response"] <- NA

  nms <- c()

  for(i in 1:ncol(rs)) {

    current_top <- rs[1,i]
    current_bottom <- rs[2,i]

    if(i + 1 < ncol(rs)) {
      coming_top <- rs[1, i+1]
      coming_bottom <- rs[2, i+1]
    }

    if(is.na(coming_top) & !is.na(current_top) & (!is.na(current_bottom) | grepl("^Other", coming_bottom)))
      pre <- current_top

    if((is.na(current_top) & !is.na(current_bottom)) | (!is.na(current_top) & !is.na(current_bottom)))
      nms[i] <- paste0(c(pre, current_bottom), collapse = " - ")

    if(!is.na(current_top) & is.na(current_bottom))
      nms[i] <- current_top

  }


  nms
}

注意すると、名前のみが返されます。通常、.csv をで読み取り...,skip=2, header = FALSE、変数に保存して、変数の名前を上書きします。また、ALOT が と を設定するのにも役立ちna.stringsますstringsAsFactor = FALSE

nms = fix_names("path/to/csv")
d = read.csv("path/to/csv", skip = 2, header = FALSE)
names(d) = nms 
于 2018-11-25T10:47:57.383 に答える
3

2013 年 11 月現在、Web ページのレイアウトが変更されているようです。を選択しAnalyze results > Export All > All Responses Data > Original View > XLS+ (Open in advanced statistical and analytical software)ます。次に、[エクスポート] に移動して、ファイルをダウンロードします。生データは、最初の行 = 質問ヘッダー / 次の各行 = 1 つの回答として取得されます。多くの回答 / 質問がある場合は、複数のファイルに分割される可能性があります。

ここに画像の説明を入力

于 2013-11-25T21:48:49.810 に答える
1

ヘッダーの問題は、「該当するものをすべて選択」を含む列の一番上の行が空白になり、列の見出しが下の行になることです。これは、これらのタイプの質問のみの問題です。

これを念頭に置いて、すべての列を通過し、列名が空白の場合は列名を 2 行目の値に置き換えるループを作成しました。これは文字長が 1 です。

次に、データの 2 行目を削除して、きれいなデータ フレームを作成できます。

for(i in 1:ncol(df)){
newname <- colnames(df)[i]
if(nchar(newname) < 2){
colnames(df)[i] <- df[1,i]
} 

df <- df[-1,]
于 2016-02-10T02:36:27.440 に答える
0

次はどうでしょうか: with を使用read.csv()header=FALSEます。2 つの配列を作成します。1 つには 2 行の見出しがあり、もう 1 つには調査への回答があります。次にpaste()、together の 2 つの行/文。最後に、 を使用しますcolnames()

于 2011-10-25T03:29:53.437 に答える