Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
dplyr或tidyr用于转换表_R_Dplyr_Tidy - Fatal编程技术网

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