聚合多个变量的唯一级别
Aggregate for unique levels of multiple variables
数据集如下所示:
ID | DELAY | PERIOD | TYPE
A 5 30 days 1
A 1 60 days 1
A 2 30 days 2
A 1 30 days 2
B 2 30 days 2
C 10 30 days 2
输出应如下所示:
ID | AV.DELAY_PERIOD_30DAYS_TYPE_1 | AV.DELAY_PERIOD_30DAYS_TYPE_2 ...
A 5 1.5
因此,从本质上讲,我需要构建一个函数来构建新变量 - 平均延迟、每个 ID 唯一、按每个唯一周期和类型拆分。
有人吗?
我们可以使用 data.table
中的 dcast
来做总结和整形
library(data.table)
dcast(setDT(df1), ID~paste0("AV.DELAY_PERIOD_",PERIOD) + TYPE, value.var = "DELAY", mean)
# ID AV.DELAY_PERIOD_30 days_1 AV.DELAY_PERIOD_30 days_2
#1: A 5 1.5
#2: B NaN 2.0
#3: C NaN 10.0
# AV.DELAY_PERIOD_60 days_1
#1: 1
#2: NaN
#3: NaN
您可以使用 R 中的聚合函数。
df1<-aggregate(df,by=list(df$id,df$period,df$type),FUN=mean)
数据集如下所示:
ID | DELAY | PERIOD | TYPE
A 5 30 days 1
A 1 60 days 1
A 2 30 days 2
A 1 30 days 2
B 2 30 days 2
C 10 30 days 2
输出应如下所示:
ID | AV.DELAY_PERIOD_30DAYS_TYPE_1 | AV.DELAY_PERIOD_30DAYS_TYPE_2 ...
A 5 1.5
因此,从本质上讲,我需要构建一个函数来构建新变量 - 平均延迟、每个 ID 唯一、按每个唯一周期和类型拆分。
有人吗?
我们可以使用 data.table
中的 dcast
来做总结和整形
library(data.table)
dcast(setDT(df1), ID~paste0("AV.DELAY_PERIOD_",PERIOD) + TYPE, value.var = "DELAY", mean)
# ID AV.DELAY_PERIOD_30 days_1 AV.DELAY_PERIOD_30 days_2
#1: A 5 1.5
#2: B NaN 2.0
#3: C NaN 10.0
# AV.DELAY_PERIOD_60 days_1
#1: 1
#2: NaN
#3: NaN
您可以使用 R 中的聚合函数。
df1<-aggregate(df,by=list(df$id,df$period,df$type),FUN=mean)