R 数据操作:收集还是传播,还是两者兼而有之?
我试图改变我的数据框,这样我就可以用一些不同的图来观察它。基本上我想比较不同的模型。这就是我所拥有的:R 数据操作:收集还是传播,还是两者兼而有之?,r,dplyr,R,Dplyr,我试图改变我的数据框,这样我就可以用一些不同的图来观察它。基本上我想比较不同的模型。这就是我所拥有的: variable = c('A','B','C','A','B','C') optimal = c(10,20,30,40,80,100) control = c(15,15,15,15,15,15) method_1 = c(11,22,28,44,85,95) method_2 = c(9, 19,31,39,79,102) df = data.frame(variable, optim
variable = c('A','B','C','A','B','C')
optimal = c(10,20,30,40,80,100)
control = c(15,15,15,15,15,15)
method_1 = c(11,22,28,44,85,95)
method_2 = c(9, 19,31,39,79,102)
df = data.frame(variable, optimal, control, method_1, method_2)
df
所以看起来是这样的:
variable optimal control method_1 method_2
1 A 10 15 11 9
2 B 20 15 22 19
3 C 30 15 28 31
4 A 40 15 44 39
5 B 80 15 85 79
6 C 100 15 95 102
variable A B C
1 optimal 10 20 30
2 optimal 40 80 100
3 control 15 15 15
4 control 15 15 15
5 method_1 11 22 28
6 method_1 44 85 95
7 method_2 9 19 31
8 method_2 39 79 102
我需要这样的东西:
variable optimal control method_1 method_2
1 A 10 15 11 9
2 B 20 15 22 19
3 C 30 15 28 31
4 A 40 15 44 39
5 B 80 15 85 79
6 C 100 15 95 102
variable A B C
1 optimal 10 20 30
2 optimal 40 80 100
3 control 15 15 15
4 control 15 15 15
5 method_1 11 22 28
6 method_1 44 85 95
7 method_2 9 19 31
8 method_2 39 79 102
我尝试过收集、传播和转置,但都没有效果。有什么想法吗?我觉得这应该是一个很容易的解决办法,但我无法让我的头周围。提前谢谢。我想你们两个都需要。还要注意的是,“聚集和分散”已被取消,取而代之的是“较长的轴”和“较宽的轴”
你必须先走长路,然后走宽路,也就是说
library(dplyr)
library(tidyr)
df %>%
pivot_longer(-1) %>%
pivot_wider(names_from = variable, values_from = value) %>%
unnest()
name A B C
<chr> <dbl> <dbl> <dbl>
1 optimal 10 20 30
2 optimal 40 80 100
3 control 15 15 15
4 control 15 15 15
5 method_1 11 22 28
6 method_1 44 85 95
7 method_2 9 19 31
8 method_2 39 79 102
具体来说,您尝试过什么?您还可以使用data.table中的melt和dcast,如下所示:librarydata.table;meltas.data.tabledf,variable,variable.name=Var[,dcast.SD,Var+rowidvariable~variable]。非常好。要消除最不安全的警告,请使用unnestcols=everything