1
私はa
,b
,c
という3つの列を持つデータフレームdf
を持っています。2つの異なる列を連続して使用して集計しgroup_by
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
は、私はそれで利用可能な値の数と列c
を使用してsummarise
続く列b
を使用してgroup_by
する必要があります。
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
しかし、上記の作業を行う前に、私はb
に複数の値を持つa
の値に属する行を削除する必要があります。
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
)を有するすべての行の列a
で、f
(値:Z
、Y
)、g
(X
、Z
値)。
# Expected output
# A tibble: 3 × 3
b nCat nDog
<fctr> <int> <int>
1 X 1 1
2 Y 0 1
3 Z 1 0
答えをありがとう。最後に合計を加えることは可能でしょうか?つまり、合計猫と総犬ですか?私はこれが質問された質問とは違うが、少しの拡張であることを理解しています。 – Prradep
@Prradep猫と犬だけがあれば 'n()'、それ以外の場合は 'Total = nCat + nDog ') – akrun
もう一度良い提案をありがとう。しかし、私は 'TotalX'、' TotalY'、 'TotalZ'、' TotalCat = 2'、 'TotalDog = 2'の代わりに' TotalCat'と 'TotalDog'を見ることに興味があります。 – Prradep