我正在尝试将数据行堆叠到列中,以便另一列中的变量将重复。我想把这样的东西
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(),但无法解决。
答案 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
和函数gather
(link)
编辑 使用@sindri_baldur数据:
library(tidyr)
xyz %>%
gather(class, measurement, -x)