如何在不聚合记录的情况下将长格式数据帧转换/重新整形为宽格式?

时间:2011-06-03 22:49:09

标签: r pivot reshape

由此:

> 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

1 个答案:

答案 0 :(得分:5)

由于x数据框中的test列未唯一标识行,但您不想进行任何聚合,因此需要使用{}增加数据框。一个唯一的id列,然后使用dcast()包中的reshape2

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