我有一个包含空气质量数据的数据集。数据帧是153行5列的矩阵。我想要找出这个数据框中第一列的平均值。该列中有缺失值,因此我希望在查找平均值时排除这些值。最后,我想使用控制结构(for循环和if-else循环)来实现这一点
我已经尝试过编写如下代码。我创建了'y‘而不是实际的空气质量数据集,以获得一个可重现的示例。
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‘
发布于 2019-09-21 01:00:57
看不到你的数据,但可能是这样的?需要初始化向量。最好在你可以的时候避免R中的循环...
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))
发布于 2019-09-21 01:27:24
一行代码,不需要for循环。
mean(data.frame$name_of_the_first_column, na.rm = TRUE)
设置na.rm = TRUE
使均值函数忽略NA
s。
发布于 2019-09-21 00:58:19
在这里,我们可以使用来自zoo
的na.aggregate
library(zoo)
df1[] <- na.aggregate(df1)
假设'df1‘是一个包含所有数字列的data.frame
,并希望用该列的相应mean
填充NA
元素。默认情况下,na.aggregate
的fun.aggregate
为mean
https://stackoverflow.com/questions/58032472
复制相似问题