使用数据集' cars'在R中,我想在此数据集中添加一个新列,该列采用列的平均值' dist'取决于列'速度'中的值,同时还有R评估'速度'作为分组参数。
首先,我需要19组反映汽车速度的独特速度:
4 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25
对于这19个组中的每一组,我想知道平均dist是什么,但只有当这19个类别中的每个类别中的至少一个条目符合标准时(例如,至少一个dist-value高于20)。
对于汽车数据集,对于速度为4到12的汽车我会得到类似的东西:
speed dist avr_dist_if_one_speed_is_above20
4 2 none
4 10 none
7 4 13
7 22 13
8 16 none
9 10 none
10 18 26
10 26 26
10 34 26
11 17 22.5
11 28 22.5
12 14 21.5
12 20 21.5
12 24 21.5
12 28 21.5
...
由于速度为4的2辆车都有低于20的dist,我没有得到这两个参赛作品的平均值。对于速度为7的汽车,我的平均速度为13,因为至少有一辆速度为7的汽车的速度超过20。
对于速度为8和9的赛车,我没有得到平均值,因为这两款赛车都有20以下的速度。速度为10的赛车应平均返回26
因为速度为10的两辆车的间距大于20。
对于速度为11的汽车,我得到22.5
对于速度为12的汽车,我得到21.5。
R代码应该计算所有剩余速度类别的平均dist,因为其余的都包括dist> 20的汽车。
答案 0 :(得分:0)
如果我理解你的问题,这将做你想要的。
library(dplyr)
cars %>%
group_by(speed) %>%
summarise(n = n(),
avg_dist = ifelse(any(dist > 20),mean(dist, na.rm = T), NA)
答案 1 :(得分:0)
试试这个:
library(dplyr)
cars %>%
group_by(speed, dist) %>%
group_by(speed) %>%
mutate(avr_dist_if_one_speed_is_above20 = mean(dist[max(dist)>20]))