我的数据格式为
public EditPatientViewModel (IPersistenceService svc) {}
我想对其进行转换,以便为每个变量中的“是”响应分配变量的名称(DF <- data.frame(V1 = factor(c("Yes", "No", "Yes", "No")),
V2 = factor(c("Yes", "No", "No", "Yes")),
V3 = factor(c("No", "Yes", "No", "No")))
,V1
和V2
)然后移动到新变量,而“否”回答变为V3
。生成的数据框应如下所示:
NA
如何做到这一点?
答案 0 :(得分:3)
很大程度上是@ Moody_Mudskipper答案的变体,但你可以这样做:
cbind(DF, V_comb=c(ifelse(DF=="Yes", names(DF)[col(DF)], NA)))
# V1 V2 V3 V_comb
#1 Yes Yes No V1
#2 No No Yes <NA>
#3 Yes No No V1
#4 No Yes No <NA>
#5 Yes Yes No V2
#6 No No Yes <NA>
#7 Yes No No <NA>
#8 No Yes No V2
#9 Yes Yes No <NA>
#10 No No Yes V3
#11 Yes No No <NA>
#12 No Yes No <NA>
答案 1 :(得分:2)
cbind(DF,comb=c(mapply(factor,DF,label=rbind.data.frame(NA,names(DF)))))
V1 V2 V3 comb
1 Yes Yes No V1
2 No No Yes <NA>
3 Yes No No V1
4 No Yes No <NA>
5 Yes Yes No V2
6 No No Yes <NA>
7 Yes No No <NA>
8 No Yes No V2
9 Yes Yes No <NA>
10 No No Yes V3
11 Yes No No <NA>
12 No Yes No <NA>
答案 2 :(得分:2)
在基地R
DF2 <- data.frame(DF,V_comb= c(as.matrix(DF)))
DF2$V_comb <- ifelse(DF2$V_comb == "Yes", rep(names(DF),each=nrow(DF)),NA)
DF2
# V1 V2 V3 V_comb
# 1 Yes Yes No V1
# 2 No No Yes <NA>
# 3 Yes No No V1
# 4 No Yes No <NA>
# 5 Yes Yes No V2
# 6 No No Yes <NA>
# 7 Yes No No <NA>
# 8 No Yes No V2
# 9 Yes Yes No <NA>
# 10 No No Yes V3
# 11 Yes No No <NA>
# 12 No Yes No <NA>