Используя dplyr
, вы можете использовать group_by
, чтобы сохранить все уникальные строки "Col1", а затем передать все свои различные функции в summarise
. С вашим примером это может быть что-то подобное.
Примечание: для вычисления weighted.mean
Col4 по Col3, вам нужно пройти эту функцию перед вычислением sum
из Col3, в противном случае длина Col4 и Col3 будет отличаться.
Вы можете затем реорганизуйте ваш фрейм данных в правильном порядке, используя select
:
library(dplyr)
df %>% group_by(Col1) %>%
summarise(Col2 = mean(Col2),
Col4 = weighted.mean(Col4,Col3),
Col3 = sum(Col3)) %>%
select(Col1,Col2,Col3,Col4)
# A tibble: 5 x 4
Col1 Col2 Col3 Col4
<chr> <dbl> <int> <dbl>
1 A 0.17 83 0.878
2 B 0.939 103 0.869
3 C 0.228 80 0.935
4 D 0.566 306 0.733
5 E 0.703 103 0.636
Данные
structure(list(Col1 = c("A", "B", "C", "D", "D", "E"), Col2 = c(0.17,
0.939, 0.228, 0.566, 0.566, 0.703), Col3 = c(83L, 103L, 80L,
169L, 137L, 103L), Col4 = c(0.878, 0.869, 0.935, 0.851, 0.588,
0.636)), row.names = c(NA, -6L), class = c("data.table", "data.frame"
), .internal.selfref = <pointer: 0x561706072cc0>)