根据R中的标准计算平均值[一式两份]

jpfvwuh4  于 2023-06-19  发布在  其他
关注(0)|答案(2)|浏览(96)

此问题已在此处有答案

Mean per group in a data.frame [duplicate](8个回答)
9天前关闭
我试图计算不同列的平均值,基于R中的标准。

现在,我想计算每个公司每年的平均值。
我试过这段代码,但它不起作用:
DF %>% group_by(“Year”)%>% colMeans(DF,na.rm=TRUE)
有人有主意吗?

s8vozzvw

s8vozzvw1#

使用库data.table非常简单。检查here以获取有关data.table的信息

# CREATE DUMMY DATA
library(data.table)

set.seed(1)
df <- data.frame(Year=rep(2001:2004, each=3), 
                 A = sample(1:10, 12, replace = T),
                 B = sample(1:10, 12, replace = T),
                 C = sample(1:10, 12, replace = T),
                 D = sample(1:10, 12, replace = T))
df$A[1] <- NA

# COMPUTE AVERAGE BY YEAR
dt <- as.data.table(df)
dt[, lapply(.SD, mean, na.rm=TRUE), by = "Year"]

# RESULTS
   Year        A        B        C        D
1: 2001 6.666667 7.666667 4.666667 7.333333
2: 2002 3.333333 6.333333 6.333333 8.000000
3: 2003 2.000000 7.666667 6.666667 8.000000
4: 2004 6.666667 5.666667 7.666667 6.666667
gpfsuwkq

gpfsuwkq2#

colMeans不适用于group_by。试试这个:

mean = DF %>%
  group_by(Year) %>%
  summarize(
    COMP1_mean = mean(COMP1, na.rm = TRUE),
    COMP2_mean = mean(COMP2, na.rm = TRUE),
    COMP3_mean = mean(COMP3, na.rm = TRUE),
    COMP4_mean = mean(COMP4, na.rm = TRUE)
  )

那就把结果打印出来
或者更好:

aggregate(DF[, 2:4], list(DF$Year), mean)

如果要添加条件:

criteria = DF$Year > 2003

然后在聚合函数中使用它:

results = aggregate(DF[criteria, 2:4], list(Year = DF[criteria, "Year"]), mean)

和打印结果。

相关问题