Dplyr:group_by和组内的操作

时间:2019-03-01 16:36:06

标签: r dplyr

请考虑以下提示

df <- structure(list(reporter = structure(c(1L, 1L, 2L, 2L, 3L, 3L),    .Label = c("NZL", 
"SEN", "USA"), class = "factor"), partner = structure(c(1L, 2L, 
 1L, 2L, 1L, 2L), .Label = c("EUN", "WLD"), class = "factor"), 
number_ntm = c(389, 20874, 0, 3933, 4, 30368)), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))

看起来像这样

 # A tibble: 6 x 3
reporter partner number_ntm
<fct>    <fct>        <dbl>
1 NZL      EUN            389
2 NZL      WLD          20874
3 SEN      EUN              0
4 SEN      WLD           3933
5 USA      EUN              4
6 USA      WLD          30368

我想做的是:group_by记者,并在每个组中用合作伙伴EUN的number_ntm除以合作伙伴WLD的number_ntm。 我想要一个非常通用的dplyr解决方案,并且在合作伙伴结构包含一些我不想包括的额外因素时也可以使用。 任何建议表示赞赏

1 个答案:

答案 0 :(得分:1)

您可以按照akrun的建议进行操作,但是请指定伙伴,而不要使用“第一和最后”。

df1<-df %>%
   group_by(reporter) %>%
   mutate(new = number_ntm[partner=="EUN"]/number_ntm[partner=="WLD"])