R 基于条件的一列平均值(在不同列中)
首先是守则:R 基于条件的一列平均值(在不同列中),r,dataframe,dplyr,R,Dataframe,Dplyr,首先是守则: 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)),
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()
问题陈述:我想平均每个V4
和V1
的列V3
。例如,2015年,V3
下的所有1都应取平均值。同样,所有2个应分别取平均值。本质上,2015年1和A的排数不是5排,而是只有一排(这是平均数)。类似地,2和A的行数不是5行,而是只有一行
实际数据帧更长,7个V4
条目中的每个条目每年有365个V3
条目(从2015年到2020年)
谢谢,
拉胡尔
另外,我不知道我的问题是否清楚 像这样
library(dplyr)
df %>%
group_by(V1, V2, V4) %>%
summarise(mean_V3 = mean(V3))
# A tibble: 3 x 4
# Groups: V1, V2 [3]
V1 V2 V4 mean_V3
<chr> <chr> <chr> <dbl>
1 2015 1 A -0.185
2 2015 2 A -0.290
3 2016 1 B 0.364
哇!既然你已经做到了。看起来很容易。谢谢,多米尼克。
library(dplyr)
df %>%
group_by(V1, V2, V4) %>%
summarise(mean_V3 = mean(V3))
# A tibble: 3 x 4
# Groups: V1, V2 [3]
V1 V2 V4 mean_V3
<chr> <chr> <chr> <dbl>
1 2015 1 A -0.185
2 2015 2 A -0.290
3 2016 1 B 0.364
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) %>% as_tibble() %>% mutate(V3 = as.numeric(V3))