Если у меня есть эти данные (dat1)

`  L1  L2 L3 L4 L5 L6
   1   0   1  0  4  0  
   4   1   0  1  1  0
   1   0   0  1  4  1

Все значения в матрице равны 0,1,4. Мне нужно просуммировать каждую строку, игнорируя номер 4. Результат такой

2
3
3

У меня более 900 строк .. Я пробовал их, но чего-то не хватает

rowSums(subset(dat1,L1!=4)
rowSums(which[dat1!=4])
n4=dat1[dat1==4]<-0
0
user3478697 1 Апр 2014 в 20:10

2 ответа

Лучший ответ

Вы могли просто сделать:

dat1[dat1==4] <- 0
rowSums(dat1)

Если изменение объекта недопустимо, просто сначала скопируйте его:

dat1Zero <- dat1
dat1[dat1Zero==4] <- 0
rowSums(dat1Zero)
0
enricoferrero 1 Апр 2014 в 19:09

Если все значения находятся в (0,1,4), тогда вы просто хотите посчитать единицы, нет ??

apply(df,1,function(x)sum(x==1))
# [1] 2 3 3
0
jlhoward 1 Апр 2014 в 19:14