# 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])
}
从2013年11月开始,网页布局似乎发生了变化。选择Analyze results > Export All > All Responses Data > Original View > XLS+ (Open in advanced statistical and analytical software)。然后转到导出并下载文件。您将获得原始数据,第一行=问题标题/后面的每一行= 1个响应,如果您有许多响应/问题,可能会在多个文件之间分割。 x1c 0d1x的数据
> colnames(sample)
[1] "Respondent ID" "Please provide your contact information:" "...11"
[4] "...12" "...13" "...14"
[7] "...15" "...16" "...17"
[10] "...18" "...19" "I wish it would have snowed more this winter."
型
已从SurveyMonkey清理导出:
> colnames(sample_clean)
[1] "Respondent ID" "Please provide your contact information: Name"
[3] "Please provide your contact information: Company" "Please provide your contact information: Address"
[5] "Please provide your contact information: Address 2" "Please provide your contact information: City/Town"
[7] "Please provide your contact information: State/Province" "Please provide your contact information: ZIP/Postal Code"
[9] "Please provide your contact information: Country" "Please provide your contact information: Email Address"
[11] "Please provide your contact information: Phone Number" "I wish it would have snowed more this winter. Response"
8条答案
按热度按时间5lwkijsr1#
您可以从Surveymonkey以适合R的方便形式导出它,请参阅“高级电子表格格式”中的下载回复
的数据
lnlaulya2#
我最后所做的是使用libreoffice打印出标为V1,V2等的标题,然后我只是读取文件,
字符串
然后对m1$V10,m1$V23等进行分析...
为了避免多列的混乱,我使用了以下小函数
型
毫无疑问,有人会把它清理干净的!
为了整理类似李克特的量表,我使用了:
型
请随意评论,因为毫无疑问,这将再次出现!
neekobn83#
我必须经常处理这个问题,并且在两列上有标题有点痛苦。这个函数解决了这个问题,所以你只有一行标题要处理。它还加入了多穿孔问题,所以你有top:bottom风格的命名。
字符串
如果你注意到,它只返回名称。我通常只是用
...,skip=2, header = FALSE
读取.csv,保存到一个变量并覆盖变量的名称。它也有助于设置你的na.strings
和stringsAsFactor = FALSE
。型
0kjbasz64#
从2013年11月开始,网页布局似乎发生了变化。选择
Analyze results > Export All > All Responses Data > Original View > XLS+ (Open in advanced statistical and analytical software)
。然后转到导出并下载文件。您将获得原始数据,第一行=问题标题/后面的每一行= 1个响应,如果您有许多响应/问题,可能会在多个文件之间分割。x1c 0d1x的数据
of1yzvn45#
标题的问题是,“选择所有适用的”列将有一个空白的顶行,列标题将是下面的一行。这只是这些类型的问题的问题。
考虑到这一点,我编写了一个循环来遍历所有列,如果列名为空(其字符长度为1),则将列名替换为第二行的值。
然后,您可以删除第二行数据,并拥有一个整洁的 Dataframe 。
字符串
wgeznvg76#
参加聚会很晚,但这仍然是一个问题,我发现的最好的解决方法是使用一个函数将列名和子列名粘贴在一起,基于重复的值。
例如,如果导出到
.csv
,重复的列名将自动替换为RStudio中的X
。如果导出到.xlsx
,重复的值将是...
。以下是
base R
解决方案:字符串
对于一些示例数据,列名的更改如下所示:
SurveyMonkey的原始导出:
型
已从SurveyMonkey清理导出:
型
示例数据:
型
polkgigr7#
在2023年可以工作的两个解决方案:
1.使用
haven()
包1.用我的酷R包!
1.使用
haven
包Haven是导入和导出Stata、SPSS和SAS文件的R软件包。如果您在从SurveyMonkey导出时选择了“SPSS”选项,则可以使用Haven读取导出文件,该文件将是
.sav
文件:导出接口:
x1c 0d1x的数据
用
haven::read_sav()
在R中阅读文件字符串
生成的文件将是一个tibble(一种类型的数组)。列用'q 000 N'语法标记,并且可能包含haven包特有的文件类型,例如类为
haven_labelled
的数字向量,类似于因子。2.使用我的酷包
我已经创建了一个one-function package,它使用tidyverse函数来读取和清理SM结果,这些SM结果在默认情况下以奇怪的格式导出。
如果你愿意,你可以这样做:
型
为了方便后人,我将在下面包含函数的主体:
read_sm()
函数型
pkbketx98#
下面的例子如何:使用
read.csv()
和header=FALSE
。做两个数组,一个是两行标题,一个是调查的答案。然后paste()
两行/两个句子在一起。最后,使用colnames()
。