我想计算每个ID值的不同颜色数量的数量,我希望结果数据帧是原始数据帧+另一个名为count的列。从另一篇提出相同问题的帖子中,我得到了以下代码,但这段代码似乎对我不起作用
ID= c('A', 'A', 'A', 'B', 'B', 'B')
color=c('white', 'green', 'orange', 'white', 'green', 'green')
d = data.frame (ID, color)
d %>%
group_by(ID) %>%
mutate(count = n_distinct(color))
通过运行此代码,我得到以下结果:
ID color count
<fct> <fct> <int>
1 A white 3
2 A green 3
3 A orange 3
4 B white 3
5 B green 3
6 B green 3
当我想要的是
ID color count
<fct> <fct> <int>
1 A white 3
2 A green 3
3 A orange 3
4 B white 2
5 B green 2
6 B green 2
有人可以告诉我我做错了什么或使用dplyr做另外一种方式吗?
答案 0 :(得分:1)
根据@akrun和@ DominicComtois上面的评论,一旦我指定我使用dplyr中的mutate使用“dplyr :: mutate”而不仅仅是“mutate”
答案 1 :(得分:1)
一些注意事项:
# 1. Data set
df = data.frame (
id = c('A', 'A', 'A', 'B', 'B', 'B'),
color = c('white', 'green', 'orange', 'white', 'green', 'green'))
# 2. Desired result
df %>%
group_by(id) %>%
dplyr::mutate(count = n_distinct(color))
# 3. Result with a number of unique 'color's per 'id'
df %>%
group_by(id, color) %>%
dplyr::mutate(count = n()) %>%
unique()