Получение ошибки фактора при агрегировании таблицы, но столбцы не являются факторами

Итак, у меня есть данные, загруженные из файла 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

Я не уверен, что еще делать. Любая помощь приветствуется!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
34
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

«Игрок» — это 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)

Так что это сработало, но не так, как предполагалось. Возможно, я неправильно понимаю использование агрегата. То, что я пытаюсь получить, - это сумма моего столбца «Общая половина PPR» для каждого игрока, то есть игрока A — 300, игрока B — 200 и так далее. Если я конвертирую игрока в числовое, я теряю фактическое имя игрока. Любые предложения о том, как добраться до того, что я ищу, что эквивалентно следующему в SQL: выберите игрока, сумму (Total_Half_PPR) из группы таблиц по игроку

scunden 03.07.2019 04:53

@scunden Это наоборот; Пожалуйста, проверьте обновление

akrun 03.07.2019 04:55

Другие вопросы по теме