dplyr或tidyr用于转换表
我有这个数据框dplyr或tidyr用于转换表,r,dplyr,tidy,R,Dplyr,Tidy,我有这个数据框 group = c("A","B","C") num = c(1,2,3) calc1 = c(4,5,6) calc2 = c(7,8,9) temp = c("GG","HH","KK") temp2 = c("ll","pp","rr") library(dplyr) dat =data.frame(group = group, num = num , calc1 = calc1, calc2 = calc2, temp = temp, temp2 = temp2) dat
group = c("A","B","C")
num = c(1,2,3)
calc1 = c(4,5,6)
calc2 = c(7,8,9)
temp = c("GG","HH","KK")
temp2 = c("ll","pp","rr")
library(dplyr)
dat =data.frame(group = group, num = num , calc1 = calc1, calc2 = calc2, temp = temp, temp2 = temp2)
dat
group num calc1 calc2 temp temp2
1 A 1 4 7 GG ll
2 B 2 5 8 HH pp
3 C 3 6 9 KK rr
我想重新排列数据,使表看起来像一个公制列,其中有num、calc1和calc2,列w的值为group,删除temp列:
metric A B C
num 1 2 3
calc1 4 5 6
calc2 7 8 9
最好的方法是什么?放下
temp
列,collect
然后spread
:
library(dplyr); library(tidyr)
dat %>%
select(-starts_with('temp')) %>%
gather(metric, val, -group) %>%
spread(group, val)
# metric A B C
#1 calc1 4 5 6
#2 calc2 7 8 9
#3 num 1 2 3
放下
temp
列,collect
然后spread
:
library(dplyr); library(tidyr)
dat %>%
select(-starts_with('temp')) %>%
gather(metric, val, -group) %>%
spread(group, val)
# metric A B C
#1 calc1 4 5 6
#2 calc2 7 8 9
#3 num 1 2 3