首页 > 解决方案 > 在R中将行堆叠为列

问题描述

我正在尝试将数据行堆叠成列,以便另一列中的变量重复。我想把这样的东西

tib <- tribble(~x, ~y, ~z, "a", 1,2, "b", 3,4)
> tib
# A tibble: 2 x 3
  x         y     z
  <chr> <dbl> <dbl>
1 a         1     2
2 b         3     4

进入

t <- tribble(~X, ~Y, "a", 1, "a", 2, "b", 3, "b", 4)
> t
# A tibble: 4 x 2
  X         Y
  <chr> <dbl>
1 a         1
2 a         2
3 b         3
4 b         4

感谢您的帮助,如果我在某处错过了此解决方案,我们深表歉意。我进行了搜索,并尝试应用gather()、spread(),但无法解决。

标签: r

解决方案


这是一个使用示例data.table::melt()

# Assuming your data is a data.frame
xyz <- data.frame(
  x = c("a", "b"),
  y = c(1, 3),
  z = c(2, 4)
)

library(data.table)
melt(xyz, id.vars = "x")[c(1, 3)]

  x value
1 a     1
2 b     3
3 a     2
4 b     4

推荐阅读