R 使用ddply计算组特征

R 使用ddply计算组特征,r,aggregate,plyr,R,Aggregate,Plyr,我有一个与此相关的后续问题 我在下面有一个类似的数据框,但我试图计算腐烂水果在同一类别的其他水果中所占的百分比。因此,我不应考虑有关水果本身是否腐烂。下面的dataframe per很有希望澄清这一点,期望的结果列纯粹是出于示例目的插入的 理想情况下,我希望使用ddply来表示ddplydf、.FROUT、mutate、Perc=SUMBROOT/lengthRotten。但是,我没有找到一种方法来只考虑同一组中其他行的值。我想我可以使用基于所讨论行的值的if语句组合,但我想知道是否有更优雅的方

我有一个与此相关的后续问题

我在下面有一个类似的数据框,但我试图计算腐烂水果在同一类别的其他水果中所占的百分比。因此,我不应考虑有关水果本身是否腐烂。下面的dataframe per很有希望澄清这一点,期望的结果列纯粹是出于示例目的插入的

理想情况下,我希望使用ddply来表示ddplydf、.FROUT、mutate、Perc=SUMBROOT/lengthRotten。但是,我没有找到一种方法来只考虑同一组中其他行的值。我想我可以使用基于所讨论行的值的if语句组合,但我想知道是否有更优雅的方法来实现这一点?非常感谢,W

    Fruit Rotten Desired_Outcome
1   Apple      1            0.33
2   Apple      1            0.33
3   Apple      0            0.66
4   Apple      0            0.66
5    Pear      1            0.66
6    Pear      1            0.66
7    Pear      1            0.66
8    Pear      0            1.00
9  Cherry      0            0.00
10 Cherry      0            0.00
11 Cherry      0            0.00
12 Banana      1              NA

Fruit=c(rep("Apple",4),rep("Pear",4),rep("Cherry",3),"Banana")
Gender=c(rep("Male",3),rep("Female",3))
Rotten=c(1,1,0,0,1,1,1,0,0,0,0,1)
Desired_Outcome=c(0.33,0.33,0.66,0.66,0.66,0.66,0.66,1,0,0,0,NA)
df=data.frame(Fruit,Rotten,Desired_Outcome)     
df
mutate将以元素方式工作,因此您可以从总和中减去每行的值

    Fruit Rotten Desired_Outcome      Perc
1   Apple      1            0.33 0.3333333
2   Apple      1            0.33 0.3333333
3   Apple      0            0.66 0.6666667
4   Apple      0            0.66 0.6666667
5  Banana      1              NA       NaN
6  Cherry      0            0.00 0.0000000
7  Cherry      0            0.00 0.0000000
8  Cherry      0            0.00 0.0000000
9    Pear      1            0.66 0.6666667
10   Pear      1            0.66 0.6666667
11   Pear      1            0.66 0.6666667
12   Pear      0            1.00 1.0000000
mutate将以元素方式工作,因此您可以从总和中减去每行的值

    Fruit Rotten Desired_Outcome      Perc
1   Apple      1            0.33 0.3333333
2   Apple      1            0.33 0.3333333
3   Apple      0            0.66 0.6666667
4   Apple      0            0.66 0.6666667
5  Banana      1              NA       NaN
6  Cherry      0            0.00 0.0000000
7  Cherry      0            0.00 0.0000000
8  Cherry      0            0.00 0.0000000
9    Pear      1            0.66 0.6666667
10   Pear      1            0.66 0.6666667
11   Pear      1            0.66 0.6666667
12   Pear      0            1.00 1.0000000

非常感谢。我觉得自己有点愚蠢,因为我没有想到这一点。非常感谢你向我指出这一点。事实上,你在你的问题上留下了另一条评论,而不是贾斯汀的回答。顺便说一句,我是乔兰,不是贾斯汀。这让我相信,你真的需要花一点时间来澄清一下这个网站如何运作的一些基本机制。这将帮助你获得帮助,因为目前贾斯汀不知道你正试图与他交谈。抱歉-我的目的是在写下评论后立即删除它。感谢您的指导-我们将阅读常见问题解答,非常感谢。我觉得自己有点愚蠢,因为我没有想到这一点。非常感谢你向我指出这一点。事实上,你在你的问题上留下了另一条评论,而不是贾斯汀的回答。顺便说一句,我是乔兰,不是贾斯汀。这让我相信,你真的需要花一点时间来澄清一下这个网站如何运作的一些基本机制。这将帮助你获得帮助,因为目前贾斯汀不知道你正试图与他交谈。抱歉-我的目的是在写下评论后立即删除它。感谢指导-将阅读常见问题解答这是非常有用的解决方案。我是在寻找一个非常类似问题的解决方案时遇到的。你能解释一下为什么建议的语法使用.Fruit吗?我最初的想法是语法应该是.variables=cFruit,这与在ddply中拆分data.frame的手册建议一致。请参阅帮助。功能?plyr::。它可以让你捕获变量的名称,而不是它们的当前值。这是一个非常有用的解决方案。我是在寻找一个非常类似问题的解决方案时遇到的。你能解释一下为什么建议的语法使用.Fruit吗?我最初的想法是语法应该是.variables=cFruit,这与在ddply中拆分data.frame的手册建议一致。请参阅帮助。功能?plyr::。它允许您捕获变量的名称,而不是它们的当前值。