Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
R 通过分离列来融化数据_R_Dplyr_Tidyr - Fatal编程技术网

R 通过分离列来融化数据

R 通过分离列来融化数据,r,dplyr,tidyr,R,Dplyr,Tidyr,我有一个数据帧df,它是由dplyr的总结每个 V1_mean V2_mean V3_mean V4_mean V5_mean V1_median V2_median V3_median V4_median V5_median V1_my_mode V2_my_mode V3_my_mode V4_my_mode V5_my_mode V1_sum 1 3 4 NA 3.75 5 3 4 NA

我有一个数据帧
df
,它是由dplyr的
总结每个

 V1_mean V2_mean V3_mean V4_mean V5_mean V1_median V2_median V3_median V4_median V5_median V1_my_mode V2_my_mode V3_my_mode V4_my_mode V5_my_mode V1_sum
1       3       4      NA    3.75       5         3         4        NA         4         5          1          2         NA          4          5      4
  V2_sum V3_sum V4_sum V5_sum
1      4      4      4      4
我怎样才能把它变成下面的格式

  var mean median my_mode sum
1  V1    3      3       1   4
2  V2    4      4       2   4
3  V3   NA     NA      NA   4
4  V4    3      4       4   4
5  V5    5      5       5   4
df

structure(list(V1_mean = 3, V2_mean = 4, V3_mean = NA_real_, 
    V4_mean = 3.75, V5_mean = 5, V1_median = 3, V2_median = 4, 
    V3_median = NA_real_, V4_median = 4, V5_median = 5, V1_my_mode = "1", 
    V2_my_mode = "2", V3_my_mode = NA, V4_my_mode = "4", V5_my_mode = "5", 
    V1_sum = 4L, V2_sum = 4L, V3_sum = 4L, V4_sum = 4L, V5_sum = 4L), class = "data.frame", .Names = c("V1_mean", 
"V2_mean", "V3_mean", "V4_mean", "V5_mean", "V1_median", "V2_median", 
"V3_median", "V4_median", "V5_median", "V1_my_mode", "V2_my_mode", 
"V3_my_mode", "V4_my_mode", "V5_my_mode", "V1_sum", "V2_sum", 
"V3_sum", "V4_sum", "V5_sum"), row.names = c(NA, -1L))

这里有一种方法可以进行一个小的修改:将列名中的
myu模式
更改为
myMode
。这使得
熔化
数据(使用
收集
)后,
分离
很容易工作:

库(dplyr)
图书馆(tidyr)
df%>%
聚集(var、val,以“V”开头)%>%
分离(var,分为=c(“V1”、“V2”))%>%
价差(V2,val)
#V1平均中值模式和
#1 V1 3 3 1 4
#2 V2 4 4 2 4
#3 V3 4
#4 V4 3.75 4
#5 V5 5 4

太棒了。你又是我的一天。谢谢在本例中,还可以使用
聚集(var、val、everything())
library(dplyr)
library(tidyr)
df %>%
  gather(var, val, starts_with("V")) %>%
  separate(var, into = c("V1", "V2")) %>%
  spread(V2, val)
#   V1 mean median myMode sum
# 1 V1    3      3      1   4
# 2 V2    4      4      2   4
# 3 V3 <NA>   <NA>   <NA>   4
# 4 V4 3.75      4      4   4
# 5 V5    5      5      5   4