Аргумент не является числовым или логическим: возвращает NA (вычисляет среднее)

#r

#r

Вопрос:

Я изучаю R. Я загружаю набор данных и импортирую в R с помощью этой команды:

 data <- read.csv( file = "observations.csv", quote =""")
  

Некоторые из переменных: id, responsetime,errormsg, …

В разделе глобальной среды указано, что идентификатор является int, errormsg — коэффициент с 4 уровнями, а время отклика — коэффициент с 7040 уровнями. И, возможно, проблема здесь, потому что время отклика не является категориальной переменной, почему время отклика считается фактором?

Но я не понимаю одну вещь. Например, я вычислял среднее значение времени отклика следующим образом:

 mean(data$responsetime)
  

Но у меня эта ошибка:

среднее значение (данные $ время ответа)

 [1] NA
Warning message:
In mean.default(data$responsetime) :
  argument is not numeric or logical: returning NA
  

Вы знаете, почему это происходит? Время отклика является числовой переменной, поэтому предполагалось, что можно вычислить среднее значение..

str(данные) показывает:

    data.frame': 43000 obs. of  6 variables:
 $ id          : int  1 2 3 4 5 6 7 8 9 10 ...
 $ callNum     : int  1 7 7 80 20 22 30 34 30 42 ...
 $ serverCode  : Factor w/ 10 levels "A","B","E",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ processtime : Factor w/ 240 levels "0","1","10","100",..: 111 1 1 1 1 1 1 1 1 1 ...
 $ responsetime: Factor w/ 10304 levels "100","1000","10001",..: 1621 4126 8982 2743 7425 2796 3486 6212 2048 2512 ...
 $ errormsg    : Factor w/ 4 levels "Failure",..: 2 2 2 2 2 2 2 2 2 2 ...
  

Файл csv выглядит следующим образом (после экспорта из sql):

 "id","callNum","serverCode","processtime","responsetime","errormsg"
"1","1","XNN","2","1204","OK"
"2","1","YNN","1","4236","OK"
  

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

1. Похоже, он не числовой. Как это str(movies) выглядит?

2. Тот факт, что data это функция, которая возвращает список доступных наборов данных, является последней проблемой, с которой вы сталкиваетесь str(data) . Безопаснее называть ваши переменные чем-то, что также не является именем функции, например dataset . Не могли бы вы выполнить dput(head(data)) и вставить результат, чтобы мы могли лучше понять, что происходит не так?

3. Я обновляю вопрос с этим. Я писал фильмы, но это должны были быть данные, извините.

4. Когда вы прочитаете данные, попробуйте установить stringsAsFactors = FALSE . После этого исследуйте responsetime столбец. Держу пари, что есть значения, которые не являются числовыми

5. Поскольку сейчас это фактор, вам нужно преобразовать в символьный, прежде чем преобразовывать в числовой, иначе вы получите целое число, которое оно использует для хранения значений вместо меток, то есть числа, которые вы хотите. Все вместе, data$responsetime <- as.numeric(as.character(data$responsetime)) ; mean(data$responsetime, na.rm = TRUE)