【问题标题】:Computing ratios of groups in dplyr based on values from other rows根据其他行的值计算 dplyr 中组的比率
【发布时间】:2017-02-16 03:30:32
【问题描述】:

我正在尝试使用 R 和 dplyr 进行一些数据汇总。我的数据框有很多行如下形式:

 color   year       score
 <fctr>  <int>       <int> 

对于 N 种不同颜色中的每一种,我都有相同数量的年份行。对于每一个,我都有一个分数。在每种颜色(组)中,我想计算所有分数与某一特定年份的比率。例如:

   color   year       score
   <fctr>  <int>       <int> 
1  blue    1980        43
2  blue    1982         13
3  red     1980         330
4  red     1998         89

我想用一个名为“比率”的新列来扩充这个框架,它是每个颜色组(例如蓝色或红色)中每一行的分数与具有固定年份的行的分数的商, 1980. 例如:

   color   year       score    ratio
   <fctr>  <int>       <int>    
1  blue    1980        43       1
2  blue    1982         13      0.302325581
3  red     1980         330     1
4  red     1998         89      0.269696969

我知道如何使用mutatesummarize,但我不清楚如何为满足特定条件的给定行(在本例中为 1980 年的行(我们保证每个组中只有一个))。

什么是干净的方法?

【问题讨论】:

  • 试试df1 %&gt;% group_by(color) %&gt;% mutate(ratio = score/score[1]),或者如果每个“颜色”的“年份”值发生变化,那么试试mutate(ratio = score/score[year==1980])
  • @akrun 这很完美。谢谢!
  • 没问题,很高兴为您提供帮助。我想会有一些欺骗链接。

标签: r dplyr


【解决方案1】:

akrun 的评论回答了我的问题:

mutate(ratio = score/score[year==1980]) 

正是我在这里所需要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 2020-11-16
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多