R сумма столбцов, деленная на количество столбцов без NA
Я не могу понять это. То, что я хочу сделать, это создать новый столбец в моем фрейме данных с суммой нескольких столбцов, деленной на количество столбцов, которые составляют сумму. Ну вот так:
ID 2003 2004 2005 2006
1 1 4 1 NA
2 2 2 NA 3
3 1 3 NA NA
4 4 1 1 NA
5 3 1 4 2
к этому:
ID 2003 2004 2005 2006 SUM/col
1 1 4 1 NA 2
2 2 2 NA 3 2.33
3 1 3 NA NA 2
4 4 1 1 NA 3
5 3 1 4 2 2.5
2 ответа
Решение
Мы можем использовать rowMeans
функция и настройка na.rm = TRUE
, dt[, -1]
это способ исключить первый столбец для анализа.
dt$`SUM/col` <- rowMeans(dt[, -1], na.rm = TRUE)
dt
ID X2003 X2004 X2005 X2006 SUM/col
1 1 1 4 1 NA 2.000000
2 2 2 2 NA 3 2.333333
3 3 1 3 NA NA 2.000000
4 4 4 1 1 NA 2.000000
5 5 3 1 4 2 2.500000
ДАННЫЕ
dt <- read.table(text = "ID 2003 2004 2005 2006
1 1 4 1 NA
2 2 2 NA 3
3 1 3 NA NA
4 4 1 1 NA
5 3 1 4 2",
header = TRUE)
Если твой data.frame
называется df
затем попробуйте:
df$"SUM/col" <- apply(df, 1, function(x) mean(x, na.rm=T))
apply
Функция рассчитывает для каждой строки сумму (исключая NA
s) делится на общее количество неNA
элементы. Полученный вектор затем добавляется в виде столбца df
,