栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > R语言

「思维发散」R语言分组计算的N种方法

R语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

「思维发散」R语言分组计算的N种方法

题: 给定一个数据框,根据某个分组对另一个列进行求值。

举例: 按照年份和月份进行分组,对温度进行求均值,其中温度中存在NA

数据库

实现这种操作有很多方法,按照代码长度,列出我想出的解题思路

1. for循环
df$Year_Month <- factor(paste(df$Year, df$Month, sep = "-" ))

temp_date <- c()
temp_mean <- c()

for (i in unique(df$Year_Month)){
  
  tmp_df <- df[df$Year_Month == i,]
  tmp_mean <- mean(tmp_df$Temperature, na.rm = T)
  temp_date <- c(temp_date,i)
  temp_mean <- c(temp_mean, tmp_mean)
  
}

res_tmp <- data.frame(date=temp_date, temp_mean=temp_mean)
2. split-lapply-do.call
df$Year_Month <- factor(paste(df$Year, df$Month, sep = "-" ))

df_list <- split(df, f=df$Year_Month)

temp_mean_list <- lapply(df_list, function(x) mean(x$Temperature, na.rm = T) )
do.call(rbind, temp_mean_list)
3. split-sapply
df$Year_Month <- factor(paste(df$Year, df$Month, sep = "-" ))
df_list <- split(df, f=df$Year_Month)
temp_mean_list <- sapply(df_list, function(x) mean(x$Temperature, na.rm = T) )
4. dplyr
library(dplyr)
df %>% 
  group_by(Year, Month) %>% 
  summarise(temp_mean = mean(Temperature, na.rm = T)) %>% 
  head()
5. SQL
library(sqldf)
sqldf("select avg(Temperature) from df group by Year,Month")
6. aggregate
out <- aggregate(df$Temperature, by=list(df$Year, df$Month), FUN=mean, na.rm=TRUE)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/855776.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号