首先,如果格式不对,很抱歉,这是我的第一个问题,我对R相对较新。
我有一个大型数据集,看起来或多或少像这样:
| 性别|问题1_1|问题1_2|问题1_3| QUESTION1_3 |
| --|--|--|--| ------------ |
| F级|不适用|不适用|不适用| NA |
| 中|1| 0| 1| 1 |
| 中|不适用|不适用|不适用| NA |
| F级|0| 0| 1| 1 |
| 中|不适用|不适用|不适用| NA |
问题被分散的原因是因为参与者被要求选择“所有适用的”。
现在,我希望通过列名将所有问题1合并在一起,如果问题得到回答,则显示一个值,如果问题没有得到回答,则显示另一个值(或者保持NA)-只是为了查看每个问题(而不是问题中的每个选项)有多少个答案。
理想情况下,我希望有一个代码,可以让我通过列名中的部分字符串匹配来合并列,因为数据集非常大,但我可以手动完成。
我最接近的方法是使用tidiverse包手动完成:
dat_joined <- as.data.frame(dat) %>%
unite("QUESTION1", 3:5, remove = TRUE)
字符串
但它以一种奇怪的格式连接列:
| 性别|问题1| QUESTION1 |
| --|--| ------------ |
| F级|不适用不适用不适用| NA_NA_NA |
| 中|1_0_1| 1_0_1 |
| 中|不适用不适用不适用| NA_NA_NA |
| F级|0_0_1| 0_0_1 |
| 中|不适用不适用不适用| NA_NA_NA |
有什么解决办法吗?我真的很难做到这一点,因为我在这里发现的大多数问题都集中在合并列,其中答案通过部分字符串匹配,而不是列名。
此外,我最终将不得不研究每一个选项,我很难知道从哪里开始。有没有什么资源可以让我查一下?
这是一些代码来复制玩具表
ID<- c("100001", "100002", "100003", "100004", "100005")
gender <- c("F","M","M","F","M")
QUESTION1_1<- c(NA, "1",NA,"0",NA)
QUESTION1_2<- c(NA, "0",NA,"0",NA)
QUESTION1_3<- c(NA, "1",NA,"0",NA)
dat<- cbind(ID,gender,QUESTION1_1,QUESTION1_2,QUESTION1_3)
dat
型
2条答案
按热度按时间vlju58qv1#
如果我正确理解了你的问题,这应该是可行的:
字符串
创建于2023-07-24带有reprex v2.0.2
liwlm1x92#
使用
pivot_longer
,它非常简单:字符串
从这里你可以问一些问题,比如我有多少个数据点(勾选选项)?(6,上面的行数),或者通过以下方式获得回答问题的数量:
型