Итак, у меня есть данные, загруженные из файла csv. Я пытался загрузить его с помощью stringsAsFactors = FALSE, но все равно получаю ошибку. Первые 13 столбцов являются строками, остальные столбцы (начиная с 14) являются числовыми. Вот основной код:
library("readxl")
# Read data with facotr is False
data <- read.csv("PFR csvData.csv",stringsAsFactors = FALSE)
# Convert all numeric rows to numeric
data[,14:length(colnames(data))]<- as.numeric(as.character(unlist(data[,14:length(colnames(data))])))
# Convert all string rows to characters
data[,1:13]<- as.character(unlist(data[,1:13]))
Когда я проверяю класс каждого столбца с помощью sapply(data, class), я получаю:
Rk Player Pos Age Date Lg Tm
"character" "character" "character" "character" "character" "character" "character"
H.A Opp Result G. Week Day Receiving_Tgt
"character" "character" "character" "character" "character" "character" "numeric"
Receiving_Rec Receiving_Yds Receiving_Y.R Receiving_TD Receiving_Ctch. Receiving_Y.Tgt Receiving_PPR
"numeric" "numeric" "numeric" "numeric" "numeric" "numeric" "numeric"
Passing_Cmp Passing_Att Passing_Cmp. Passing_Yds Passing_TD Passing_Int Passing_Rate
"numeric" "numeric" "numeric" "numeric" "numeric" "numeric" "numeric"
Passing_Sk Passing_Sk_Yds Passing_Y.A Passing_AY.A Passing_PPR Rushing_Att Rushing_Yds
"numeric" "numeric" "numeric" "numeric" "numeric" "numeric" "numeric"
Rushing_Y.A Rushing_TD Rushing_Half_PPR Total_Half_PPR
"numeric" "numeric" "numeric" "numeric"
Я также проверил наличие NA через apply(data, 2, function(x) any(is.na(x))) и получил:
Rk Player Pos Age Date Lg Tm
FALSE FALSE FALSE FALSE FALSE FALSE FALSE
H.A Opp Result G. Week Day Receiving_Tgt
FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Receiving_Rec Receiving_Yds Receiving_Y.R Receiving_TD Receiving_Ctch. Receiving_Y.Tgt Receiving_PPR
FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Passing_Cmp Passing_Att Passing_Cmp. Passing_Yds Passing_TD Passing_Int Passing_Rate
FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Passing_Sk Passing_Sk_Yds Passing_Y.A Passing_AY.A Passing_PPR Rushing_Att Rushing_Yds
FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Rushing_Y.A Rushing_TD Rushing_Half_PPR Total_Half_PPR
FALSE FALSE FALSE FALSE
Итак, на данный момент я думаю, что загрузил свои данные без факторов, убедился, что все столбцы не являются факторами, задав их типы, и перепроверил, просмотрев класс каждого столбца. Я также убедился, что нет NA
Однако, когда я использую свою функцию агрегирования, я получаю сообщение об ошибке, связанное с факторами:
aggregate(data$Player, by = list(data$Total_Half_PPR), FUN = sum)
Error in Summary.factor(291L, na.rm = FALSE) :
‘sum’ not meaningful for factors
Я не уверен, что еще делать. Любая помощь приветствуется!





«Игрок» — это factor. Нам нужно преобразовать в numeric
data$Player <- as.numeric(as.character(data$Player))
Если нам нужно получить sum «Total_Half_PPR», сделайте это другим способом.
aggregate(data$Total_Half_PPR, by = list(data$Player), FUN = sum)
или используя формульный метод
aggregate(Total_Half_PPR ~ Player, data, FUN = sum)
@scunden Это наоборот; Пожалуйста, проверьте обновление
Так что это сработало, но не так, как предполагалось. Возможно, я неправильно понимаю использование агрегата. То, что я пытаюсь получить, - это сумма моего столбца «Общая половина PPR» для каждого игрока, то есть игрока A — 300, игрока B — 200 и так далее. Если я конвертирую игрока в числовое, я теряю фактическое имя игрока. Любые предложения о том, как добраться до того, что я ищу, что эквивалентно следующему в SQL: выберите игрока, сумму (Total_Half_PPR) из группы таблиц по игроку