Python/R: если 2 столбца имеют одинаковое значение в нескольких строках, добавьте значения в 3-й столбец и усредните 4-й, 5-й и 6-й столбцы
Вход:
0 77 1 2 3 5
0 78 2 4 6 1
0 78 1 2 3 5
3 79 0 4 5 2
3 79 6 8 2 1
3 79 1 2 3 1
Вывод: (добавьте значения 3-го столбца для одинаковых строк и возьмите среднее значение всех значений в 4-м, 5-м и 6-м столбце)
0 77 1.0 2.0 3.0 5.0
0 78 3.0 3.0 4.5 3.0
3 79 7.0 4.6 3.3 1.3
1 ответ
Решение
Мы можем использовать dplyr
в R
, We group by the first two columns, mutate
the 3rd column ('V3') as sum
of that column, and use summarise_each
чтобы получить mean
of columns 3:6.
library(dplyr)
res <- df1 %>%
group_by(V1, V2) %>%
mutate(V3=sum(V3)) %>%
summarise_each(funs(round(mean(.),1)), V3:V6)
as.data.frame(res)
# V1 V2 V3 V4 V5 V6
#1 0 77 1 2.0 3.0 5.0
#2 0 78 3 3.0 4.5 3.0
#3 3 79 7 4.7 3.3 1.3
данные
df1 <- structure(list(V1 = c(0L, 0L, 0L, 3L, 3L, 3L), V2 = c(77L, 78L,
78L, 79L, 79L, 79L), V3 = c(1L, 2L, 1L, 0L, 6L, 1L), V4 = c(2L,
4L, 2L, 4L, 8L, 2L), V5 = c(3L, 6L, 3L, 5L, 2L, 3L), V6 = c(5L,
1L, 5L, 2L, 1L, 1L)), .Names = c("V1", "V2", "V3", "V4", "V5",
"V6"), class = "data.frame", row.names = c(NA, -6L))