R基于其他列的新变量

R基于其他列的新变量,r,R,使用R中的数据集“cars”,我想在此数据集中添加一个新列,该列根据“speed”列中的值计算列“dist”的平均值,同时将R评估“speed”作为分组参数 因此,首先我需要19组反映汽车独特速度$speed: 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 对于这19组中的每一组,我想知道平均距离是多少,但前提是这19个类别中的每个类别中至少有一个条目符合标准(例如,至少有一个距离值大于20) 对于速度为4到12的汽车,使用汽车

使用R中的数据集“cars”,我想在此数据集中添加一个新列,该列根据“speed”列中的值计算列“dist”的平均值,同时将R评估“speed”作为分组参数

因此,首先我需要19组反映汽车独特速度$speed:

4  7  8  9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25
对于这19组中的每一组,我想知道平均距离是多少,但前提是这19个类别中的每个类别中至少有一个条目符合标准(例如,至少有一个距离值大于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的两辆车的距离都小于20,我没有得到这两个条目的平均距离。对于速度为7的车,我得到的平均距离为13,因为至少有一辆速度为7的车的距离大于20

对于速度为8和9的车,我没有得到平均值,因为这两辆车的距离都小于20。速度为10的车的平均返回值应该是26

因为两辆速度为10的车的距离都在20以上

对于速度为11的汽车,我得到22.5

对于速度为12的汽车,我得到21.5


R代码应计算所有剩余速度类别的平均距离,因为其余所有速度类别均包括距离>20的车辆。

如果我正确理解您的问题,这将满足您的要求

库(dplyr)
汽车%>%
分组依据(速度)%>%
总结(n=n(),平均距离=ifelse(任何距离>20),平均距离(距离,na.rm=T),na)
试试这个:

 library(dplyr)

 cars %>% 
       group_by(speed, dist) %>% 
       group_by(speed) %>% 
       mutate(avr_dist_if_one_speed_is_above20 = mean(dist[max(dist)>20]))

这不是代码编写服务。请在尝试自己解决此问题时添加您编写的代码。对于按某列进行分组,您可以查看
dplyr
和/或
data.table
。如果您在谷歌上搜索关于在R中进行分组和汇总的信息,您可能会很快找到有关Stackoverflow的答案。我提前道歉。我很抱歉对R非常陌生,对编码了解很少。上面的例子没有代码。我手工生成了输出。很感谢你的诚实。我将通过阅读@swk开始学习R,只是为了澄清,如果速度大于20,你希望输出中的行数与
avr\u dist\u相同,是吗帽子正确(这是你正在展示的,但我想确认)?另一种方法是输出一个摘要data.frame,使用
speed
avr\u dist\u(如果速度大于20
)。根据OP显示输出的方式,您可能希望使用
mutate
而不是摘要。OP显示添加到输入数据中的新列。正确。我在更改格式之前回答了这个问题,所以我要继续根据OP希望它按速度分组的描述。我编辑了您的代码并添加了一个“匹配项”,以将其与原始cars数据帧融合。如下所示:库(dplyr)cars2%摘要(n=n(),avg_dist=ifelse(any(dist>20),mean(dist,na.rm=T),na)))cars2