### This is a R related problem.
### I'm using windows 10
### Latest R version and Packages
library(plyr)
library(dplyr)
library(gcookbook)在库中,有一个名为cabbage_exp的数据集。在这个数据集中,我想计算每个组中权重的比例(按日期分组)。
在我的数据集中,有6个样本,每个样本都包含日期和权重。有3个日期d16、d20和d21,每个日期行都有一个权重值。因此,我的目标是按日期对数据进行分组,并计算相对比例权重。例如,组是(d16,d16),(d20,d20)和(d21,d21),每个组的相对重量比例应该加到100。假设d16 = 40%,d16 = 60%,那么组总数=100%,依此类推。
下面的代码plyr包分裂在“日期”和计算权重的比例在每一组。它工作起来很有魅力,但我尝试使用dplyr包实现相同的代码,但没有得到相同的结果。
library(plyr)
ddply(cabbage_exp, "Date", transform,
percent_weight = Weight / (Weight)*100)我在dplyr中使用了下面的代码,但是得到了未分组的比例,这不是按日期分组比例
library(dplyr)
cabbage_exp %>%
group_by(Date) %>%
mutate(percent = Weight/sum(Weight))有个问题。
如何实现dplyr代码以获得相同的结果。我试过使用group_by,但它并没有将日期组合在一起。如果能在这个问题上提供任何帮助,我们将不胜感激。
发布于 2017-08-29 07:39:32
您可以使用ungroup函数。
cabbage_exp %>%
group_by(Date) %>%
mutate(Wt = sum(Weight)) %>%
ungroup %>%
mutate(percent_weight = Weight / Wt * 100) %>%
arrange(Date) %>%
dplyr::select(-Wt)产生以下输出
# A tibble: 6 x 7
Cultivar Date Weight sd n se percent_weight
<fctr> <fctr> <dbl> <dbl> <int> <dbl> <dbl>
1 c39 d16 3.18 0.9566144 10 0.30250803 58.45588
2 c52 d16 2.26 0.4452215 10 0.14079141 41.54412
3 c39 d20 2.80 0.2788867 10 0.08819171 47.37733
4 c52 d20 3.11 0.7908505 10 0.25008887 52.62267
5 c39 d21 2.74 0.9834181 10 0.31098410 65.08314
6 c52 d21 1.47 0.2110819 10 0.06674995 34.91686https://stackoverflow.com/questions/45933127
复制相似问题