将行作为列堆叠在R中

时间:2019-04-23 16:07:22

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

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

2 个答案:

答案 0 :(得分:1)

以下是使用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

答案 1 :(得分:0)

这可以通过许多软件包来完成。一种可能性是tidyr和函数gatherlink

编辑 使用@sindri_baldur数据:

library(tidyr)
xyz %>% 
  gather(class, measurement, -x)