r - 如何在不聚合记录的情况下将长格式的数据框转换/ reshape 为宽格式?

标签 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

最佳答案

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

关于r - 如何在不聚合记录的情况下将长格式的数据框转换/ reshape 为宽格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6233392/

相关文章:

r - 为什么条件均值(条件模式)或随机效应的图看起来像这样?

mysql - 如何在 MySQL 中返回数据透视表输出?

r - 如何在 R 中的范围内转换聚合值并用零填充缺失的范围值

r - 在来自向量元素的字符串上的多行文本中使用粗体

r - 使用模式更改矩阵中的多个值

当 reshape 无法猜测时变变量的名称时, reshape r 中的数据

SQL:使用不同的 'where' 子句连接同一表

MySQL加入多行

R代码: columns to rows i. e团体到个人

python - 如何 reshape 这个数据框