我的数据框df
包含三列a
,b
,c
。
df <- data.frame(a = c('a','b','c','d','e','f','g','e','f','g'),
b = c('X','Y','Z','X','Y','Z','X','X','Y','Z'),
c = c('cat','dog','cat','dog','cat','cat','dog','cat','cat','dog'))
df
# output
a b c
1 a X cat
2 b Y dog
3 c Z cat
4 d X dog
5 e Y cat
6 f Z cat
7 g X dog
8 e X cat
9 f Y cat
10 g Z dog
我必须group_by
使用b
列,然后summarise
使用c
列,其中包含可用值的计数。
df %>% group_by(b) %>%
summarise(nCat = sum(c == 'cat'),
nDog = sum(c == 'dog'))
#output
# A tibble: 3 × 3
b nCat nDog
<fctr> <int> <int>
1 X 2 2
2 Y 2 1
3 Z 2 1
但是,在执行上述任务之前,我应该删除a
中属于b
中具有多个值的值的行。
df %>% group_by(a) %>% summarise(count = n())
#output
# A tibble: 7 × 2
a count
<fctr> <int>
1 a 1
2 b 1
3 c 1
4 d 1
5 e 2
6 f 2
7 g 2
例如,在此数据框中,所有行的值均为e
(值:Y
,X
),f
(值:Z
,列Y
中的g
),X
(值:Z
,a
)。
# Expected output
# A tibble: 3 × 3
b nCat nDog
<fctr> <int> <int>
1 X 1 1
2 Y 0 1
3 Z 1 0
答案 0 :(得分:3)
我们可以filter
与n_distinct
一起使用来过滤'b'中每个'a'组只有一个唯一元素的值,然后按'b'分组,我们执行{{ 1}}
summarise