我有这样的数据帧使用其他列
dat = data.frame(Type = c("A","A","B","B","C","C","D"), NextType = c("A", "B","B", "C","C","D",NA),
A = c(rep(0,7)),
B = rep(0,7),
C = rep(0,7) ,
D = rep(0,7),
stringsAsFactors = F)
dat
Type NextType A B C D
1 A A 0 0 0 0
2 A B 0 0 0 0
3 B B 0 0 0 0
4 B C 0 0 0 0
5 C C 0 0 0 0
6 C D 0 0 0 0
7 D <NA> 0 0 0 0
什么来填充列A,B和C和d为1,如果该列名(A,B,C的最佳方式应用公式某些列,d等)=类型= NextType
所以
column A would be 1,0,0,0,0,0,0
column B would be 0,0,1,0,0,0,0
column C would be 0,0,0,0,1,0,0
column D would be 0,0,0,0,0,0,0
注意 - 这是动态的。我有4列以上A,B和C和D,但可以有10,20或任何数量的列。
对不起,我根本没有匹配的情况下排除了案件。你能看到编辑? – user3022875
所以你想要一个专门为零的列? – Psidom
在这种情况下,你可以尝试使用'model.matrix',创建一个与'Type'列+其他级别相同级别的因子类型的关键列,'model.matrix'将保留缺少的额外级别。 (type,NextType)%>%mutate(key = factor(if_else(Type == NextType&!is.na(Type)&!is.na(NextType),Type,“other”), levels = c(“other”,unique(Type))))%>%bind_cols(。,as.data.frame(model.matrix(〜key - 1,。)))%>%select(-keyother, - 键)' – Psidom