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 Функция рассчитывает для каждой строки сумму (исключая NAs) делится на общее количество неNA элементы. Полученный вектор затем добавляется в виде столбца df,

Другие вопросы по тегам