#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 ()?