Я хотел бы создать новый столбец, равный среднему значению нескольких переменных (столбцов) в моем фрейме данных. Однако я боюсь, что не могу использовать rowMeans, потому что не хочу усреднять все переменные. Более того, я не решаюсь вручную вводить все имена переменных (а их много). Например:
my_data <- data.frame(a = c(1,2,3), b = c(4,5,6), c = c(10,10,10), d = c(13,24,81),
e = c(10, 8, 6), hello = c(1,-1,1), bye = c(1,5,5))
Я хочу изменить строку с именем avg, которая представляет собой среднее значение только переменных a, b, c, d и e. Поскольку в моем наборе данных имена переменных длинные (и сложные) и их больше 10, я предпочитаю не вводить их по одной. Итак, я думаю, мне может понадобиться использовать пакет dplyr и функцию изменения ?? Не могли бы вы подсказать мне, как это сделать?
Приведенный ниже контент добавлен после ваших добрых комментариев и ответов. Еще раз спасибо всем:
На самом деле мне нужны имена столбцов: Mcheck5
my_data <- data.frame(a = c(1,2,3), b = c(4,5,6), c = c(10,10,10), d = c(13,24,81),
e = c(10, 8, 6), hello = c(1,-1,1), bye = c(1,5,5))
1, Mcheck5my_data$avg = rowMeans(select(my_data, Mcheck5_1_1:Mcheck5_8_1), na.rm = TRUE)
1, ..., Mcheck5_8_1 (всего их 8). Однако я попробовал my_data$avg = rowMeans(select(my_data, Mcheck5_1_1:Mcheck5_8_1), na.rm = TRUE)
, но мне выдали ошибку:
Error in select(my_data, Mcheck5_1_1:Mcheck5_8_1) :
unused argument (Mcheck5_1_1:Mcheck5_8_1)
Прямо сейчас я решил проблему, используя следующий код:
`idx = grep("Mcheck5_1_1", names(my_data))
my_data$avg = rowMeans(my_data[, idx:idx+7], na.rm = TRUE)`
Но есть ли более элегантный способ сделать это? Или почему я не мог использовать select()
? Спасибо!
my_data$rowmn <- rowMeans(my_data[,1:5])
; или в dplyr:my_data %>% mutate(rowmn = rowMeans(.[1:5]))
- person Jaap   schedule 08.10.2017