问题描述
我想要做的是按“地方”添加一列,计算整个“id”列中的 id 出现次数:
id <- c(204850,204850,312512,452452,285421,758412,758412)
places <- c("kitchen","kitchen","garden","salon","bathroom","garden")
df <- data.frame(id,places)
> df
id places
1 204850 kitchen
2 204850 kitchen
3 204850 garden
4 312512 salon
5 312512 salon
6 452452 salon
7 285421 bathroom
8 758412 garden
9 758412 bathroom
10 758412 garden
我看到的唯一选项是 dplyr 中的计数,但它是创建一个新的数据框。
输出应如下所示:
> df
id places id_occurrence
1 204850 kitchen 3
2 204850 kitchen 3
3 204850 garden 3
4 312512 salon 2
5 312512 salon 2
6 452452 salon 1
7 285421 bathroom 1
8 758412 garden 3
9 758412 bathroom 3
10 758412 garden 3
解决方法
您可以使用以下解决方案:
library(dplyr)
df %>%
group_by(id) %>%
add_count(name = "id_occurrence")
# A tibble: 10 x 3
# Groups: id [5]
id places id_occurrence
<dbl> <chr> <int>
1 204850 kitchen 3
2 204850 kitchen 3
3 204850 garden 3
4 312512 salon 2
5 312512 salon 2
6 452452 salon 1
7 285421 bathroom 1
8 758412 garden 3
9 758412 bathroom 3
10 758412 garden 3
,
我们也可以在不分组的情况下做到这一点
library(dplyr)
df %>%
add_count(id,name = 'id_occurence')