Как подсчитать количество столбцов, которые имеют значение с помощью группирующей переменной в R? - PullRequest
0 голосов
/ 16 июня 2020

У меня есть такие данные:

repetition Ob1 Ob2 Ob3 Ob4
1           0   0   0   1
1           0   0   3   0
1           1   3   3   0
1           2   3   3   0
2           4   0   2   2
2           4   0   3   0
2           0   0   0   0
3           0   0   0   0
3           4   0   4   0
3           0   0   0   0

Я хочу подсчитать количество столбцов за повторение, которые имеют определенное значение, например 1.

Итак, в этом случае повторение 1 должно возвращать 2, потому что Ob1 и Ob4 имеют значение 1. Все остальное получает 0, потому что нет других повторений с 1.

Ответы [ 2 ]

1 голос
/ 16 июня 2020

вы можете получить подсчет, используя dplyr пакет под кодом:

df$count <- rowSums(df[,2:5] == df$repetition)
df %>% select(repetition, count) %>% group_by(repetition) %>% summarise(count = sum(count))

# A tibble: 3 x 2
  repetition count
       <int> <dbl>
1          1     2
2          2     2
3          3     0
1 голос
/ 16 июня 2020

Вы можете использовать by например:

by(x[-1]==1, x$repetition, function(y) sum(colSums(y) > 0))
#INDICES: 1
#[1] 2
#------------------------------------------------------------ 
#INDICES: 2
#[1] 0
#------------------------------------------------------------ 
#INDICES: 3
#[1] 0

или вернуть именованный вектор

c(by(x[-1]==1, x$repetition, function(y) sum(colSums(y) > 0)))
#1 2 3 
#2 0 0 
...