2012-05-14 1 views
1

Мне нужно рассчитать среднее значение среди переменных для отдельных единиц моего набора данных. Но, делая это, мне не нужно учитывать некоторые значения. Чтобы лучше объяснить, думаю, что есть две единицы и три переменные:в среднем по строке без учета отрицательных значений

 V1 V2  V3 
[1] 3  -2  4 
[2] -1  4  1 

и вы хотите вычислить среднее значение по строкам, без учета этих отрицательных значений:

=> среднее (1row) = (3 + 4)/2

=> среднее (2row) = (4 + 1)/2

Может кто-нибудь пожалуйста, дайте мне команды, чтобы сделать это в R?

Спасибо большого

ответ

7

Используйте функцию применить, чтобы взять средние каждую строку, с условием, что значения должны быть больше 0.

df=data.frame(V1=c(3,-1),V2=c(-2,4),V3=c(4,1));df 

apply(df,1,function(x) mean(x[x>0])) 
+4

Другим решением было бы 'это. na (df) <- df <= 0; rowMeans (df, na.rm = TRUE) '. –

+0

'NA' - ваш друг :-). Обратите также внимание на то, что метод Джошуа оставляет вам данные, лишенные отрицательных значений, если вы хотите выполнить дополнительные операции над вашим «желаемым» подмножеством. –