如何将长格式的数据框转换/重塑为宽格式,而不进行记录聚合?

3

从以下内容开始:

> 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个回答

5

由于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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接