首页 > 解决方案 > 在R中逐行划分它下面

问题描述

我有一个像这样的数据框:

block partner prSwitch
1   p1  0.06666667
1   p2  0.06666667
2   p1  0.03333333
2   p2  0.06666667
3   p1  0.10000000
3   p2  0.06666667
4   p1  0.06666667
4   p2  0.03333333
5   p1  0.10000000
5   p2  0.13333333
6   p1  0.06666667
6   p2  0.23333333

我想用 p1 将每一行与 p2 在同一块中的一行和每个块分开。

我希望我的新 df 看起来像这样:

block  prSwitch of p1/p2
1   0.06666667
2   0.03333333
3   0.10000000
4   0.06666667
5   0.10000000
6   0.06666667

谢谢 !

标签: r

解决方案


使用dplyr

library(dplyr)
your_data %>%
  group_by(block) %>%
  summarize(prSwitch_p1_p2_ratio = prSwitch[partner == "p1"] / prSwitch[partner == "p2"])

如果您在一个块中没有单个p1和,这将引发错误。p2


推荐阅读