我可以请求你的帮助,如何在一个组内求和行,但有条件。
条件是,如果window等于10,则保留count 1值,但如果它不等于10,则对具有相同ID但保留组内第一个值(或最小值)的窗口大小的行求和。
我相信mutate不会起作用,或者也许可以用summarise来完成,但我不知道如何在条件下完成。
这是我的代码,但我卡住了,因为这将创建一个新的列。
result_df1 <- df1 %>%
group_by(id) %>%
mutate(new_count1 = ifelse(window==10, count1, sum(count1)))
字符串
示例数据:
在下表中,id 4的count 1和count 2的值在result_df1
中求和,因为它的两个窗口都不等于10。
DF1
| 窗口|计数1|计数2| count2 |
| --|--|--| ------------ |
| 10个|二个|三十| 30 |
| 二百三十|五十三|三个| 3 |
| 四百三十|四十|五| 5 |
| 10个|三个|九十四| 94 |
| 三百七十|三十二|四| 4 |
| 三百八十|十四岁|三个| 3 |
result_df1(这是我想要的结果)
| 窗口|计数1|计数2| count2 |
| --|--|--| ------------ |
| 10个|二个|三十| 30 |
| 二百三十|五十三|三个| 3 |
| 四百三十|四十|五| 5 |
| 10个|三个|九十四| 94 |
| 三百七十|四十六|七| 7 |
谢谢你的帮助!
2条答案
按热度按时间laik7k3q1#
使用
by
。字符串
型
mbskvtky2#
你可以
group_by
是否window == 10
,然后sum
:字符串
或者:
型
输出量
型