我的数据框看起来像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)
我认为问题是,我的数据不平衡。有任何想法吗?非常感谢你的帮助!
答案 0 :(得分:2)
您可以使用spread
包中的tidyr
功能:
library(dplyr)
library(tidyr)
data_long %>%
group_by(treatment) %>%
mutate(unique_id = 1:n()) %>%
spread(treatment, rolls)
为了使spread
正常工作,治疗组中的每一行都需要有唯一的标识符。