I'm trying to use gather
in the tidyr
package, but I'm not able to change the outputted column names from the default names. For instance:
df = data.frame(time = 1:100,a = 1:100,b = 101:200)
df.long = df %>% gather("foo","bar",a:b)
colnames(df.long)
gives me
[1] "time" "variable" "value"
but shouldn't it be "time" "foo" "bar"
?
I can change "foo" and "bar" to anything I want, and it still gives me "variable" and "value" as my column names.
Help. What am I missing here?
This could possibly be a bug. If you are willing to try else, like melt() of data.table, you could do below:
# 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With