当我在Qualtrics中创建我的调查时,我使用了进位随机化,让来自度量的问题子集出现在第一页上,然后在下一页显示一个尚未看到的问题的随机子集,以此类推。最终的结果是长时间的测量被分解成5页,问题的顺序是完全随机的。效果很好!但是,当作为CSV输出时,数据会变得非常混乱。下面是一个可重复的例子,其中只有两个块导出的数据。
reprex.data1 <- matrix(c("124", "Completely", "Completely", NA, "973", NA, "Moderately", NA, "592", NA, NA, "Completely"), nrow=3, byrow=TRUE)
reprex.data2 <- matrix(c("124", NA, NA, NA, "973", "Moderately", NA, "Completely", "592", NA, "Completely", NA), nrow=3, byrow=TRUE)
reprex1.cols <- c("id", "scale1_1", "scale2_1", "scale3_1")
reprex2.cols <- c("id", "scale1_2", "scale2_2", "scale3_2")
colnames(reprex.data1) <- reprex1.cols
colnames(reprex.data2) <- reprex2.cols> reprex.data1
id scale1_1 scale2_1 scale3_1
[1,] "124" "Completely" "Completely" NA
[2,] "973" NA "Moderately" NA
[3,] "592" NA NA "Completely"
> reprex.data2
id scale1_2 scale2_2 scale3_2
[1,] "124" NA NA NA
[2,] "973" "Moderately" NA "Completely"
[3,] "592" NA "Completely" NA 我想把这些问题组合起来,这样五个街区的调查结果就会被分解成一个街区。这看起来应该是相对简单的,但是我无法用我习惯使用的不同的合并/连接函数来解决它。有小费吗?下面是我希望这些数据最终看起来是什么样子:
reprex.final <- matrix(c("124", "Completely", "Completely", NA, "973", "Moderately", "Moderately", "Completely", "592", NA, "Completely", "Completely"), nrow=3, byrow=TRUE)
reprex.cols <- c("id", "scale1", "scale2", "scale3")
colnames(reprex.final) <- reprex.cols> reprex.final
id scale1 scale2 scale3
[1,] "124" "Completely" "Completely" NA
[2,] "973" "Moderately" "Moderately" "Completely"
[3,] "592" NA "Completely" "Completely"发布于 2022-05-23 20:23:10
您可以像这样使用来自tidyr的tidyr实用程序/还可以使用dplyr/stringr,所以下面我已经加载了tidyverse
library(tidyverse)
bind_rows(
pivot_longer(as.data.frame(reprex.data1), cols=-id),
pivot_longer(setNames(as.data.frame(reprex.data2), colnames(reprex.data1)), cols=-id)
) %>%
filter(!is.na(value)) %>%
mutate(name = str_remove(name,"_1")) %>%
pivot_wider(id_cols = id, names_from = name, values_from=value)输出:
id scale1 scale2 scale3
<chr> <chr> <chr> <chr>
1 124 Completely Completely NA
2 973 Moderately Moderately Completely
3 592 NA Completely Completelyhttps://stackoverflow.com/questions/72354151
复制相似问题