подсчитать количество различных переменных в группе

У меня есть кадр данных, например:

df <- data.frame(
  ID = c('123','124','125','126'),
  Group = c('A', 'A', 'B', 'B'),
  V1 = c(1,2,1,0),
  V2 = c(0,0,1,0),
  V3 = c(1,1,0,3))

который возвращает:

    ID Group V1 V2 V3
1 123     A  1  0  1
2 124     A  2  0  1
3 125     B  1  1  0
4 126     B  0  0  3

и я хотел бы вернуть таблицу, которая указывает, представлена ​​ли переменная в группе или нет:

Group V1 V2 V3
A     1  0  1
B     1  1  1

Чтобы подсчитать количество различных переменных в каждой группе.


person skurp    schedule 17.03.2017    source источник
comment
Вы можете использовать count или n_distinct. Вопрос не ясен   -  person akrun    schedule 17.03.2017
comment
imo это довольно ясно; я снова открою, если ОП докажет обратное   -  person Jaap    schedule 17.03.2017
comment
отредактировано для уточнения   -  person skurp    schedule 17.03.2017
comment
Вы просто пытаетесь увидеть, не равен ли какой-либо член группы 0 в переменной?   -  person Andrew Jackson    schedule 18.03.2017


Ответы (2)


Мы можем сделать это с помощью base R

aggregate(.~Group, df[-1], function(x) as.integer(sum(x)>0))
#  Group V1 V2 V3
#1     A  1  0  1
#2     B  1  1  1

Или используя rowsum из base R

+(rowsum(df[-(1:2)], df$Group)>0)
#   V1 V2 V3
#A  1  0  1
#B  1  1  1

Или с by от base R

+(do.call(rbind, by(df[3:5], df['Group'], FUN = colSums))>0)
#   V1 V2 V3
#A  1  0  1
#B  1  1  1
person akrun    schedule 18.03.2017

Ты пытался

unique(group_by(mtcars,cyl)$cyl).  

Output:[1] 6 4 8
person Chad Crowe    schedule 17.03.2017