如何将plyr包代码的ddply实现为以下COLLIAU exp数据集的dplyr。任何帮助都将受到感谢

如何将plyr包代码的ddply实现为以下COLLIAU exp数据集的dplyr。任何帮助都将受到感谢,r,dplyr,plyr,R,Dplyr,Plyr,在gcookbook库中有一个名为colla\u exp的数据集。在这个数据集中,我想计算各组中的权重比例(按日期分组) 在我的数据集中有6个样本,每个样本包含日期和重量。 有3个日期d16、d20和d21,每个日期行都有一个权重值。因此,我的目标是按日期对数据进行分组,并计算相对比例权重。例如,组为(d16,d16),(d20,d20)和(d21,d21),每组的相对重量比例应加起来为100。假设d16=40%和d16=60%,那么组总数=100%,依此类推 以下代码为“日期”的plyr包装拆

gcookbook库中有一个名为colla\u exp的数据集。在这个数据集中,我想计算各组中的权重比例(按日期分组)

在我的数据集中有6个样本,每个样本包含日期和重量。 有3个日期d16、d20和d21,每个日期行都有一个权重值。因此,我的目标是按日期对数据进行分组,并计算相对比例权重。例如,组为(d16,d16),(d20,d20)和(d21,d21),每组的相对重量比例应加起来为100。假设d16=40%和d16=60%,那么组总数=100%,依此类推

以下代码为“日期”的plyr包装拆分,并计算各组的重量比例。它工作起来很有魅力,但我尝试使用dplyr包实现相同的代码,但没有得到相同的结果

### This is a R related problem.
### I'm using windows 10
### Latest R version and Packages

library(plyr)

library(dplyr)

library(gcookbook)

我在dplyr中使用了下面的代码,但是得到了非分组比例,这不是日期分组比例

library(plyr)
ddply(cabbage_exp, "Date", transform,
      percent_weight = Weight / (Weight)*100)

问题。
如何实现dplyr代码以获得相同的结果。我已经试过使用group_by,但它没有将日期分组在一起。对此问题的任何帮助都将不胜感激。

您可以使用
解组功能

library(dplyr)
cabbage_exp %>% 
  group_by(Date) %>% 
  mutate(percent = Weight/sum(Weight))
生成以下输出

cabbage_exp %>% 
    group_by(Date) %>% 
    mutate(Wt = sum(Weight)) %>% 
    ungroup %>% 
    mutate(percent_weight = Weight / Wt * 100) %>%
    arrange(Date) %>% 
    dplyr::select(-Wt)
#一个tible:6 x 7
品种日期重量sd n se百分比重量
1 c39 d16 3.18 0.9566144 10 0.30250803 58.45588
2 c52 d16 2.26 0.445215 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.91686

我提供的代码就是这样做的。您可能希望运行它,并将其与您声明的所需的
plyr
结果进行比较。我添加了一个按日期排序并删除了中间项。您可能想检查您的编码-我编辑了我的答案以显示结果。谢谢您,先生,您的答案是100%正确的。我的代码可能有问题。谢谢你给我宝贵的时间。我已经重新启动了我的R,现在它显示了相同的结果。非常感谢,先生。
# 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.91686