【问题标题】:R futher selection of spllit listR 进一步选择拆分列表
【发布时间】:2021-02-07 07:30:59
【问题描述】:

我有一个包含 31 列和 10000 多行的数据集:

我已经根据 3 列分离了数据:Seanson、stage 和 Team,因此它在每个阶段的每个赛季中分离了团队。

sep_team_season_stage<-split(data,f=list(data$Season,data$Stage,data$Team), drop = TRUE)

它返回了一堆包含 31 列的子列表,我希望该子集只有 7 列:

"Team", "FGM", "X3PM", "FTM", "AST", "BLK", "PTS"

我也是这样:

sep_team_season_stage[c("Team", "FGM", "X3PM", "FTM", "AST", "BLK", "PTS")]

它显示:

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

但是当我调用其中一个子列表时,它可以工作:

sep_team_season_stage$`1999 - 2000.Regular_Season.BOS`[c("Team", "FGM", "X3PM", "FTM", "AST", "BLK", "PTS")]

如何让它适用于每个列表?

【问题讨论】:

  • 如果您只需要所有子集中的 7 列,您可以从较大的数据框中选择这些列,然后再根据团队、赛季和阶段进行拆分?
  • @KarthikS 如果我首先从数据集中选择了“Team”、“FGM”、“X3PM”、“FTM”、“AST”、“BLK”、“PTS”,那么我就没有 seanson 和split() 的阶段输入?

标签: r dataframe split


【解决方案1】:

使用lapply

cols <- c("Team", "FGM", "X3PM", "FTM", "AST", "BLK", "PTS")
lapply(sep_team_season_stage, `[`, cols)

不过,我同意 Karthik 的观点,最好先对数据进行子集化,然后再执行 split,这样您就可以避免这一步。

sep_team_season_stage <- split(data[cols], 
                              list(data$Season,data$Stage,data$Team))

【讨论】:

  • 我该怎么做?如果我首先从数据集中选择“Team”、“FGM”、“X3PM”、“FTM”、“AST”、“BLK”、“PTS”,那么我没有用于 split() 的 seanson 和 stage 输入?
猜你喜欢
  • 2017-10-08
  • 1970-01-01
  • 2022-06-27
  • 2020-05-17
  • 1970-01-01
  • 2016-11-10
  • 2021-11-01
  • 1970-01-01
  • 2021-10-13
相关资源
最近更新 更多