Считать ненулевую запись в строке в R - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть следующий вид данных:

   mode1 mode2 mode3
1     8     1     0
2     0     0     0
3     6     5     4
4     1     2     3
5     1     1     1

Данные с использованием dput:

structure(list(mode1 = c(8L, 0L, 6L, 1L, 1L), mode2 = c(1L, 0L, 
5L, 2L, 1L), mode3 = c(0L, 0L, 4L, 3L, 1L)), class = "data.frame", row.names 
= c(NA,-5L))

Мне нужно посчитать количество ненулевых записей в R. Проблема IЯ сталкиваюсь с: все столбцы в factor, поэтому, если я преобразую в numeric, то значения данных будут изменены.

Ожидаемый результат:

   mode1 mode2 mode3 Count
1     8     1     0   2
2     0     0     0   0
3     6     5     4   3
4     1     2     3   3
5     1     1     1   3

По сути, count являетсяновый столбец, который считает количество ненулевых значений построчно.Я попытался length(xml_df[1,]!=0), но не смог найти ответ.

1 Ответ

0 голосов
/ 18 октября 2018

В базе R

df$count <- rowSums(df!=0)
  mode1 mode2 mode3 count
1     8     1     0     2
2     0     0     0     0
3     6     5     4     3
4     1     2     3     3
5     1     1     1     3

Использование dplyr

library(dplyr)
df %>% mutate(count=rowSums(.!=0))
#For specific columns we can use
df %>% mutate(count=rowSums(.[1:3]!=0))
#OR
df %>% mutate(count=rowSums(select(.,starts_with("mode"))!=0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...