将重复的问题折叠成R中的总结列
我使用Qualtrics的循环和合并功能创建了一个数据集,这意味着每个受访者回答了相同10个问题的25个版本中的1个。下面的代码为3名参与者生成结果数据。总共有25名参与者和250个与这些问题相关的专栏,但每个人只回答了其中的10个。还有一个ID号列将重复的问题折叠成R中的总结列,r,qualtrics,R,Qualtrics,我使用Qualtrics的循环和合并功能创建了一个数据集,这意味着每个受访者回答了相同10个问题的25个版本中的1个。下面的代码为3名参与者生成结果数据。总共有25名参与者和250个与这些问题相关的专栏,但每个人只回答了其中的10个。还有一个ID号列 structure(list(id = 1:3, q1..1 = c(2L, NA, NA), q2..1 = c(4L, NA, NA), q3..1 = c(3L, NA, NA), q4..1 = c(5L, NA, NA), q5..1
structure(list(id = 1:3, q1..1 = c(2L, NA, NA), q2..1 = c(4L,
NA, NA), q3..1 = c(3L, NA, NA), q4..1 = c(5L, NA, NA), q5..1 = c(2L,
NA, NA), q6..1 = c(1L, NA, NA), q7..1 = c(2L, NA, NA), q8..1 = c(4L,
NA, NA), q9..1 = c(6L, NA, NA), q10..1 = c(3L, NA, NA), q1..2 = c(NA,
3L, NA), q2..2 = c(NA, 5L, NA), q3..2 = c(NA, 2L, NA), q4..2 = c(NA,
6L, NA), q5..2 = c(NA, 4L, NA), q6..2 = c(NA, 2L, NA), q7..2 = c(NA,
3L, NA), q8..2 = c(NA, 4L, NA), q9..2 = c(NA, 2L, NA), q10..2 = c(NA,
1L, NA), q1..3 = c(NA, NA, 1L), q2..3 = c(NA, NA, 3L), q3..3 = c(NA,
NA, 4L), q4..3 = c(NA, NA, 2L), q5..3 = c(NA, NA, 4L), q6..3 = c(NA,
NA, 5L), q7..3 = c(NA, NA, 3L), q8..3 = c(NA, NA, 3L), q9..3 = c(NA,
NA, 2L), q10..3 = c(NA, NA, 2L)), class = "data.frame", row.names = c(NA,
-3L))
我试图将所有人的回答折叠成10列,或者创建10个新列并填充人的回答,或者将每个人的10个回答一直移动到数据集的左侧并删除其余的列。所以我想得到一些类似于这样的结果:
structure(list(id = 1:3, q1 = c(2L, 3L, 1L), q2 = c(4L, 5L, 3L
), q3 = c(3L, 2L, 4L), q4 = c(5L, 6L, 2L), q5 = c(2L, 4L, 4L),
q6 = c(1L, 2L, 5L), q7 = c(2L, 3L, 3L), q8 = c(4L, 4L, 3L
), q9 = c(6L, 2L, 2L), q10 = c(3L, 1L, 2L)), class = "data.frame", row.names = c(NA,
-3L))
我没有任何成功,即使把它启动,所以我没有任何有用的前期工作张贴。提前感谢您的帮助 我们可以使用
split.default
根据列名的公共部分划分数据。假设每个问题只有一个答案,我们可以忽略NA
值进行行求和
temp <- cbind(df[1], sapply(split.default(df[-1],
sub("\\..*", "", names(df)[-1])), function(x) rowSums(x, na.rm = TRUE)))
temp[gtools::mixedsort(names(temp))]
# id q1 q2 q3 q4 q5 q6 q7 q8 q9 q10
#1 1 2 4 3 5 2 1 2 4 6 3
#2 2 3 5 2 6 4 2 3 4 2 1
#3 3 1 3 4 2 4 5 3 3 2 2
temp