在R语言中,根据数据框中的另一列汇总列。

3

I have a data frame like this:

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
......

我希望得到以下输出:

我想要这样的输出:

Vehicle    Driver   Distance   Fuel.Consumption   Fuel.Efficiency
    W01     Alex      115.52               3.06             37.75
    W02    Brian      144.97               3.72             38.97      
......

只需将每辆车的距离和燃油消耗相加,并计算每辆车的燃油效率。我尝试使用aggregate(),但它的效果并不像我想象的那样。
aggregate(Distance~Vehicle, df, FUN=sum) 

请在您的问题中分享使用aggregate的尝试。 - user3710546
@Pascal,aggregate(Distance~Vehicle, df, FUN=sum)。我不知道如何做,先从Distance开始尝试解决它...我知道这有点傻,但我不知道该怎么做。感谢任何帮助! - Demo
2个回答

6

当我试图同时处理多个任务时,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

我有另一个问题,我的数据集中“距离”列的内容是因子(factor),我无法使用as.numeric()将其转换为数字。你能帮我解决这个问题吗? - Demo
@White.B.Jiang 使用 as.numeric(as.character(your_column)) 将其转换为数字。 - Gregor Thomas

2
使用aggregate,您可以像这样汇总距离和燃油消耗:
df2 <- aggregate(. ~  Vehicle + Driver, df1, sum)
> df2
#  Vehicle Driver Distance Fuel.Consumption
#1     W01   Alex   115.52             3.06
#2     W02  Brian   144.97             3.72

然后您可以添加一个燃油效率的列:

df2$Fuel.Efficiency <- with(df2,( Distance / Fuel.Consumption))
#> df2
#  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

1
感谢 @Rhertel 的帮助! - Demo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接