Сначала код:
library(dplyr)
#Sample Data
df1 = cbind(c(replicate(5, 2015)),
c(replicate(5, 1)),
c(rnorm(5, 0, 1)),
c(replicate(5, 'A')))
df2 = cbind(c(replicate(5, 2015)),
c(replicate(5, 2)),
c(rnorm(5, 0, 1)),
c(replicate(5, 'A')))
df3 = cbind(c(replicate(5, 2016)),
c(replicate(5, 1)),
c(rnorm(5, 0, 1)),
c(replicate(5, 'B')))
df = rbind(df1, df2, df3)
# Code I used
bs1 = file %>%
group_by(V1) %>%
group_by(V2) %>%
summarise(avg = mean(V3[V4=1])) %>%
ungroup()
Формулировка проблемы: я хочу усреднить столбец V3
для каждого V4
и V1
. Например, для 2015 года следует усреднить все единицы ниже V3
. Точно так же все двойки следует усреднить отдельно. По сути, вместо 5 строк в 2015 году для единиц и пятерок будет только одна (в среднем). Точно так же вместо 5 строк для двоек и пятерок будет только один.
Фактический фрейм данных намного длиннее: 365 V3
записей для каждой из 7 V4
записей каждый год (с 2015 по 2020).
# Desired Output
# Calculation not accurate (just an example of how the output should look like)
> new_df
V1 V2 V3 V4
2015 1 0.02456 A
2015 2 0.04533 A
2016 1 0.07821 B
Спасибо, Рахул.
PS Не знаю, ясен ли мой вопрос.