我有一个看起来像data_long的数据框:
data_long<-as.data.frame(matrix(nrow = 10, ncol = 2))
colnames(data_long)<-c("treatment","rolls")
data_long[,1]<-c(1,2,3,4,1,2,3,1,2,1)
data_long[,2]<-c(6,6,6,6,6,6,6,6,6,6)
我想将data_long重新排列为data_wide:
data_wide<-as.data.frame(matrix(nrow = 4, ncol=4))
colnames(data_wide)<-c("Treatment1","Treatment2","Treatment3","Treatment4")
data_wide[,1]<-c(6,6,6,6)
data_wide[,2]<-c(6,6,6,NA)
data_wide[,3]<-c(6,6,NA,NA)
data_wide[,4]<-c(6,NA,NA,NA)
我认为问题是我的数据不平衡。有任何想法吗?非常感谢您的帮助!
您可以使用软件包中的spread
函数tidyr
:
library(dplyr)
library(tidyr)
data_long %>%
group_by(treatment) %>%
mutate(unique_id = 1:n()) %>%
spread(treatment, rolls)
为了spread
正常工作,治疗组中的每一行都必须具有唯一的标识符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句