R中的数据操作 - 操纵子集内的子集

时间:2015-02-06 08:48:14

标签: r dataframe subset

我有一个包含如下数据的大型数据框:

customer    usage   hour    day temp
5           0.13    07      14  59
5           0.12    07      14  51
5           0.11    08      14  53
5           0.19    09      15  56
12          0.19    07      15  60
12          0.13    07      14  50
12          0.13    07      14  40
9           0.16    08      03  47
9           0.16    08      15  59
9           0.17    08      15  53

我想要做的是,为每位客户添加每小时的使用量,并将每小时的平均温度计算在一起,以天为单位。换句话说,在每个客户群中,我想要一个'用法'总和和一个临时的'每小时和每天的平均值。因此,对于此示例代码,理想输出将是

customer    SumUsage    hour    day Averagetemp
5           0.25        07      14  55
5           0.11        08      14  51
5           0.11        09      15  56
12          0.19        07      15  60
12          0.26        07      14  45
9           0.16        08      03  47
9           0.33        08      15  56

我希望这是有道理的。我是R的新手,我似乎无法让它正常工作。只是为了再次重申我想要的输出:每个客户都有多个用法'在一个月中的多天中每小时输出多次。还有一个临时的'阅读每个用法'输出。我想结合每个客户的所有小时读数。因此,对于每一天的每个客户,每天的每个小时应该有一个“使用”的总和。每小时的输出,以及平均时间'所有这些产出。

1 个答案:

答案 0 :(得分:1)

您可以使用summarise中的dplyr

require(dplyr)
df %>% 
  group_by(customer, day, hour) %>% 
  summarise(SumUsage = sum(usage), Averagetemp = mean(temp))

或使用data.table

require(data.table)
setDT(df)[, list(SumUsage = sum(usage), 
                 Averagetemp = mean(temp)), by = list(customer, day, hour)]