我有
df<-data.frame(id=c(1,2,3,4,5),one=c(0,1,0,0,0), two=c(0,0,1,0,0), three=c(0,0,0,1,0), four=c(0,0,0,0,1))
df
我想将虚拟变量 1、2、3 和 4 收集到变量 out 中,我想重新编码 out 变量的级别,以便 one="A", two="B", three= “C”和四=“D”
df.out<-data.frame(id=c(1,2,3,4,5),out=c(NA, "A","B","C","D" ))
df.out
可以在 dplyr 中实现吗?我尝试收集,但我得到不同长度的输出 data.frame,我认为枢轴更宽和更长不是正确的选择。
df 是更大、更宽和更长数据框的一部分。我希望能够指定要合并的列以及如何重新编码。理想的 tidyverse 解决方案
我正在寻找与 this 完全相反的词
最佳答案
你可以做到,
LETTERS[ifelse(rowSums(df[-1]) == 0, NA, max.col(df[-1]))]
#[1] NA "A" "B" "C" "D"
https://stackoverflow.com/questions/69673762/