R дальнейший выбор списка разделяемых объектов

#r #dataframe #split

#r #фрейм данных #разделение

Вопрос:

У меня есть набор данных, который содержит 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")]
  

Как заставить его работать в каждом списке?

Комментарии:

1. Если вам нужно всего 7 столбцов из всех подмножеств, вы можете выбрать эти столбцы из большего фрейма данных, прежде чем разбивать его на команды, сезон и этап?

2. @KarthikS если я сначала выбрал «Team», «FGM», «X3PM», «FTM», «AST», «BLK», «PTS» из набора данных, то у меня нет ввода сеанса и этапа для split ()?

Ответ №1:

Использовать lapply :

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

Тем не менее, я согласен с Картиком, лучше сначала подмножество данных, а затем сделать split так, чтобы вы могли избежать этого шага.

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

Комментарии:

1. Как я могу это сделать? если я сначала выбрал «Team», «FGM», «X3PM», «FTM», «AST», «BLK», «PTS» из набора данных, то у меня нет ввода сеанса и этапа для split ()?