从以下内容开始: > test <- data.frame(x = c("a","a","a"), y = c("b","b","c"), z = c(1,2,1)) > test x y z 1 a b 1 2 a b 2 3 a c 1 变成这样: x b c 1 a 1 NA 2 a 2 NA 3 a NA 1
由于test数据框中的x列不能唯一地标识行,而且您不想进行任何聚合,因此需要使用唯一的id列增强数据框,然后使用reshape2包中的dcast()函数: require(reshape2) test$id <- 1:nrow(test) > dcast(test, id + x ~ y, value_var = 'z')[,-1] x b c 1 a 1 NA 2 a 2 NA 3 a NA 1