如何在r中使用data.table的dcast函数


您可以使用 R 中data.table包的dcast函数将数据帧从长格式重塑为宽格式。

当您想要汇总数据框中的特定变量并按其他变量分组时,此函数特别有用。

以下示例展示了如何在实践中使用 R 中的以下数据帧的dcast函数:

 library (data.table)

#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'),
                 points=c(18, 13, 10, 12, 16, 25, 24, 31),
                 assists=c(9, 8, 8, 5, 12, 15, 10, 7))

#convert data frame to data table
dt <- setDT(df)

#view data table
dt

   team position points assists
1: AG 18 9
2: AG 13 8
3:AF 10 8
4:AF 12 5
5: BG 16 12
6: BG 25 15
7: BF 24 10
8: BF 31 7

示例 1:计算一个变量的指标,并按其他变量分组

以下代码展示了如何使用dcast函数计算平均分值(按团队位置变量分组):

 library (data.table)

#calculate mean points value by team and position
dt_new <- dcast(dt,
                team + position ~.,
                fun. aggregate = mean, 
                value. var = ' points ')

#view results
dt_new

   team position.
1:AF 11.0
2: AG 15.5
3: BF 27.5
4: BG 20.5

示例 2:计算一个变量的多个指标,并按其他变量分组

以下代码展示了如何使用dcast函数计算平均分值和最大分值,并按团队位置变量分组:

 library (data.table)

#calculate mean and max points values by team and position
dt_new <- dcast(dt,
                team + position ~.,
                fun. aggregate = list(mean, max), 
                value. var = ' points ')

#view results
dt_new

   team position points_mean points_max
1:AF 11.0 12
2: AG 15.5 18
3: BF 27.5 31
4: BG 20.5 25

示例 3:计算按其他变量分组的多个变量的指标

以下代码展示了如何使用dcast函数计算平均得分值和平均助攻值,并按球队位置变量分组:

 library (data.table)

#calculate mean and max points values by team and position
dt_new <- dcast(dt,
                team + position ~.,
                fun. aggregate = mean, 
                value. var = c(' points ', ' assists '))

#view results
dt_new

   team position points assists
1:AF 11.0 6.5
2: AG 15.5 8.5
3: BF 27.5 8.5
4: BG 20.5 13.5

其他资源

以下教程提供有关数据表的其他信息:

R 中的 data.table 与数据框:三个关键区别
如何在 R 中过滤 data.table
如何在R中使用rbindlist从多个数据表中创建数据表

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注