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