我有这个数据框:
IDSurvey = c(12234,23456,12356)
Q1 = c("Yes", "No", "Yes")
Q2 = rep("No",3)
Q3 = rep("Yes", 3)
D = data.frame(IDSurvey, Q1, Q2, Q3)
希望您能帮助您找到答案。
IDSurvey Q1 Q2 Q3 NunmberOfYes NumberOfNo
12234 Yes No Yes 2 1
23456 No No Yes 1 2
12356 Yes No Yes 2 1
非常感谢您的帮助和耐心。问候!
答案 0 :(得分:1)
使用Base R
IDSurvey = c(12234,23456,12356)
Q1 = c("Yes", "No", "Yes")
Q2 = rep("No",3)
Q3 = rep("Yes", 3)
D = data.frame(IDSurvey, Q1, Q2, Q3)
str(D)
解决方案
D$yes <- rowSums(D == "Yes",na.rm=TRUE)
D$No <- rowSums(D == "No",na.rm=TRUE)
答案 1 :(得分:1)
尝试以下操作:警告是由于不同的因素水平引起的。您可能需要重构。
library(dplyr)
library(tidyr)
D %>%
gather(key,value,-IDSurvey) %>%
with(table(IDSurvey,value))
或者这个:
D %>%
gather(key,value,-IDSurvey) %>%
group_by(IDSurvey) %>%
count(value) %>%
spread(value,n)