我正在尝试在gather
包中使用tidyr
,但我无法从默认名称更改输出的列名。例如:
df = data.frame(time = 1:100,a = 1:100,b = 101:200)
df.long = df %>% gather("foo","bar",a:b)
colnames(df.long)
给了我
[1] "time" "variable" "value"
但不应该是"time" "foo" "bar"
?
我可以将“foo”和“bar”更改为我想要的任何内容,它仍然会将“变量”和“值”作为我的列名称。
帮助。我在这里缺少什么?
答案 0 :(得分:2)
这可能是一个错误。如果您愿意尝试其他方式,例如data.table的melt(),您可以在下面执行:
# Need to load both data.table and reshape2
# For more information, could check ?data.table
library(reshape2); library(data.table)
setDT(df)
df %>% melt(id.vars = "time", variable.name = "foo", value.name = "bar")
> First 20 rows
time foo bar
1: 1 a 1
2: 2 a 2
3: 3 a 3
4: 4 a 4
5: 5 a 5
6: 6 a 6
7: 7 a 7
8: 8 a 8
9: 9 a 9
10: 10 a 10
11: 1 b 11
12: 2 b 12
13: 3 b 13
14: 4 b 14
15: 5 b 15
16: 6 b 16
17: 7 b 17
18: 8 b 18
19: 9 b 19
20: 10 b 20