基于 R 中的另一列求和数据框中的列

Dem*_*emo 2 r sum dataframe

我有一个这样的数据框:

Vehicle    Driver   Distance   Fuel.Consumption
    W01      Alex      22.31               0.58
    W01      Alex      93.21               2.48
    W02     Brian     122.72               3.22
    W02     Brian      22.25                0.5
......
Run Code Online (Sandbox Code Playgroud)

我想要这样的输出:

Vehicle    Driver   Distance   Fuel.Consumption   Fuel.Efficiency
    W01     Alex      115.52               3.06             37.75
    W02    Brian      144.97               3.72             38.97      
......
Run Code Online (Sandbox Code Playgroud)

只需将每辆车的距离和 Fuel.Consumption 相加并计算每辆车的 Fuel.Efficiency。我试过了aggregate(),但它不像我想象的那样工作:

aggregate(Distance~Vehicle, df, FUN=sum) 
Run Code Online (Sandbox Code Playgroud)

Gre*_*gor 5

当我aggregate试图一次做不止一件事时,我总是在语法上遇到问题。在这里,您要对两个现有列求和并计算一个全新的列。使用dplyr

library(dplyr)
df %>% group_by(Vehicle, Driver) %>%
    summarize(Distance = sum(Distance),
              Fuel.Consumption = sum(Fuel.Consumption),
              Fuel.Efficiency = Distance / Fuel.Consumption)

# Source: local data frame [2 x 5]
# Groups: Vehicle

#   Vehicle Driver Distance Fuel.Consumption Fuel.Efficiency
# 1     W01   Alex   115.52             3.06        37.75163
# 2     W02  Brian   144.97             3.72        38.97043
Run Code Online (Sandbox Code Playgroud)