Использование lapply () - функция, чтобы найти среднее значение каждой строки во фрейме данных в R - PullRequest
0 голосов
/ 23 июня 2018

У меня есть фрейм данных, состоящий из 36 наблюдений по 7 переменным (Technology, Sector, 2010, 2011, 2012, 2013, 2014).Переменные 1 и 2 имеют тип «factor», а переменные 3, 4, 5, 6 и 7 являются числовыми с некоторыми NA.

Я хочу использовать функцию lapply () -, чтобы найти среднее значение для каждой строки(среднее значение переменных 3, 4, 5, 6 и 7 на строку), а затем создайте новый столбец (cbind) с этими средствами.

Можно ли это сделать, например, с помощью матрицы и приложения() -функция, где вы можете указать строку против столбца - выбор:

apply(matrix, 1, mean) #will go through all the rows and calculate the mean for each one.

Ответы [ 2 ]

0 голосов
/ 23 июня 2018

Функция rowMeans будет намного эффективнее:

df$meanVal <- rowMeans(df[3:7], na.rm = TRUE)

Использование lapply в строках не часто необходимо, так как apply(dafa,1,fun) обычно работает нормально. Но в некоторых случаях вы можете захотеть:

lapply(split(data,seq(nrow(data))),fun)

или:

by(data,seq(nrow(data)),fun)
0 голосов
/ 23 июня 2018

Поскольку OP упоминается для использования любого из lapply/apply/sapply or tapply, следовательно, решение, использующее apply, может иметь вид:

df$meanVal <- apply(df[3:7], 1, mean, na.rm = TRUE)

Новый столбец meanVal будет содержать mean для столбцов 3:7

...