首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过使用FOR循环删除缺失值,在R数据集中查找列的平均值

通过使用FOR循环删除缺失值,在R数据集中查找列的平均值
EN

Stack Overflow用户
提问于 2019-09-21 00:57:14
回答 3查看 82关注 0票数 1

我有一个包含空气质量数据的数据集。数据帧是153行5列的矩阵。我想要找出这个数据框中第一列的平均值。该列中有缺失值,因此我希望在查找平均值时排除这些值。最后,我想使用控制结构(for循环和if-else循环)来实现这一点

我已经尝试过编写如下代码。我创建了'y‘而不是实际的空气质量数据集,以获得一个可重现的示例。

代码语言:javascript
运行
复制
y <- c(1,2,3,NA,5,6,NA,NA,9,10,11,NA,13,NA,15)
x <- matrix(y,nrow=15)

for(i in 1:15){
   if(is.na(data.frame[i,1]) == FALSE){
   New.Vec <- c(x[i,1])
   }
}
print(mean(New.Vec))

我预计输出结果是平均值。虽然我收到的错误是:

错误:找不到对象'New.Vec‘

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-09-21 01:00:57

看不到你的数据,但可能是这样的?需要初始化向量。最好在你可以的时候避免R中的循环...

代码语言:javascript
运行
复制
myDataFrame <- read.csv("hw1_data.csv")

New.Vec <- c()    
for(i in 1:153){
   if(!is.na(myDataFrame[i,1])){
      New.Vec <- c(New.Vec, myDataFrame[i,1])
   }
}
print(mean(New.Vec))
票数 1
EN

Stack Overflow用户

发布于 2019-09-21 01:27:24

一行代码,不需要for循环。

代码语言:javascript
运行
复制
mean(data.frame$name_of_the_first_column, na.rm = TRUE)

设置na.rm = TRUE使均值函数忽略NAs。

票数 3
EN

Stack Overflow用户

发布于 2019-09-21 00:58:19

在这里,我们可以使用来自zoona.aggregate

代码语言:javascript
运行
复制
library(zoo)
df1[] <- na.aggregate(df1)

假设'df1‘是一个包含所有数字列的data.frame,并希望用该列的相应mean填充NA元素。默认情况下,na.aggregatefun.aggregatemean

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58032472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档