我做这样的任务,其中应该计算每个组中的每个代码的平均价格和代码应该是唯一的每一组。数据集很大,但有一个dput的输出(head(df,10))来了解它:
structure(list(GROUP = c("4T", "1T", "3T", "1T", "4T", "2T", "4T", "3T", "1T", "2T"),
CODE = c(320, 602, 349, 349, 320, 622, 622, 343, 622, 622),
PRICE = c(1.78, 1.27, 3.9, 0.64, 9.5, 8.99, 0.85, 7.99, 1.96, 1.27)),
row.names = c(NA, -10L), class = c("data.table", "data.frame" ))
我试过这段代码:
library(dplyr)
df <- df %>%
group_by(CODE, GROUP) %>%
mutate(PRICE = mean(PRICE)) %>%
ungroup
输出看起来很接近所需的输出,但对于特定的组,一个代码应该只出现一次。代码的结果:
GROUP CODE PRICE
<chr> <dbl> <dbl>
1 4T 320 5.64
2 1T 602 1.27
3 3T 349 3.9
4 1T 349 0.64
5 4T 320 5.64
6 2T 622 5.13
7 4T 622 0.85
8 3T 343 7.99
9 1T 622 1.96
10 2T 622 5.13
在本例中,组2T中的两行相同,因此应该只保留一行。类似地,在组4T中也有2条相同的行,因此应该只留下一行(代码320)。如何在我的代码中添加这样的条件?它应该适用于一般情况。
发布于 2021-11-05 14:53:37
正如Edo在评论中提到的那样,您可以使用summarize
或summarise
library(dplyr)
df_SUMMARY <- df %>%
group_by(CODE, GROUP) %>%
summarize(mean_PRICE = mean(PRICE))
> df_SUMMARY
# A tibble: 8 × 3
# Groups: CODE [5]
CODE GROUP mean_PRICE
<dbl> <chr> <dbl>
1 320 4T 5.64
2 343 3T 7.99
3 349 1T 0.64
4 349 3T 3.9
5 602 1T 1.27
6 622 1T 1.96
7 622 2T 5.13
8 622 4T 0.85
``
https://stackoverflow.com/questions/69851256
复制相似问题