Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.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
使用tidyverse函数复制Reforme2聚合的整洁方式_R_Dplyr_Reshape2_Tidyr_Tidyverse - Fatal编程技术网

使用tidyverse函数复制Reforme2聚合的整洁方式

使用tidyverse函数复制Reforme2聚合的整洁方式,r,dplyr,reshape2,tidyr,tidyverse,R,Dplyr,Reshape2,Tidyr,Tidyverse,我理解,tidyr所做的事情少于reformea2:tidyr从不聚合 从更好地遵循tidyverse理念的意义上讲,是否有一种“正确”的方法来复制2的聚合 我通常把几个dplyr动词和一个tidyr动词结合起来。即: 复制 dcast(mtcars, gear~cyl, value.var = "disp", sum) gear 4 6 8 1 3 120.1 483.0 4291.4 2 4 821.0 655.2 0.0 3 5 21

我理解,
tidyr
所做的事情少于
reformea2
tidyr
从不聚合

从更好地遵循tidyverse理念的意义上讲,是否有一种“正确”的方法来复制2的聚合

我通常把几个dplyr动词和一个tidyr动词结合起来。即:

复制

dcast(mtcars, gear~cyl, value.var = "disp", sum)

  gear     4     6      8
1    3 120.1 483.0 4291.4
2    4 821.0 655.2    0.0
3    5 215.4 145.0  652.0
能行

mtcars %>% 
    group_by(gear, cyl) %>% 
    summarise(disp = sum(disp)) %>% 
    spread(cyl, disp)

Source: local data frame [3 x 4]
Groups: gear [3]

   gear   `4`   `6`    `8`
* <dbl> <dbl> <dbl>  <dbl>
1     3 120.1 483.0 4291.4
2     4 821.0 655.2     NA
3     5 215.4 145.0  652.0
mtcars%>%
组别(档位,气缸)%>%
汇总(显示=总和(显示))%>%
排列(气缸,显示)
来源:本地数据帧[3 x 4]
组别:gear[3]
档位'4``6``8`
*     
1     3 120.1 483.0 4291.4
2 4 821.0 655.2 NA
3     5 215.4 145.0  652.0

我很欣赏任何关于这是否是一个最佳解决方案的见解,如果不是,什么更好以及为什么

我会冒险猜测,它与一次一步的向前管道策略更有效,您可以将其缩短为
mtcars%%>%count(cyl,gear,wt=disp)%%>%spread(cyl,n)
,但基本上就是这样。这里没有什么问题。有很多方法可以剥猫皮。无论你是用
重塑2
tidyverse
还是在base中,都没有更好的客观效果。我同意有很多方法可以剥我们的猫(或我们的数据)的皮,但当tidyr失去聚合功能时,tidyverse中应该用什么来取代它呢?@HAVB我认为你这样做的方式很好。我认为“tidyverse方式”是在大部分时间使用dplyr的聚合工具以长格式处理数据,然后在最后传播以供展示。但这可能太宽泛了,无法得到好的答案。