3

我正在尝试学习如何使用 tidyr 将宽数据转换为长数据。假设我的数据如下所示:

df1 <- data.frame(V1=c(1.5,7.4), 
                  V2=c(6.7,8.8),
                  sim=c(1,2))

我想把我变成这样:

df2 <- data.frame(sim=c(1,1,2,2),
                  Value=c(1.5,6.7,7.4,8.8))

我认为收集是我必须使用的功能,但我不理解帮助文件。这就是我现在所拥有的:

df1 %>%
   gather(key=sim, value=V1:V2)

错误显示“错误:无效的列规范”

谢谢!

4

1 回答 1

4

尝试

library(tidyr)
df1 %>%
    gather(sim1, Value, V1:V2) %>% 
    select(-sim1) %>%
    arrange(sim)
#    sim Value
#1   1   1.5
#2   1   6.7
#3   2   7.4
#4   2   8.8

根据?gather

  gather(data, key, value, ..., na.rm = FALSE, convert = FALSE)

key,value:要在输出中创建的键和值列的名称。

...:要收集的列的规范。使用裸变量名。用 'x:z' 选择 x 和 z 之间的所有变量,用 '-y' 排除 y。有关更多选项,请参阅选择文档。

于 2015-04-16T15:33:07.390 回答