r语言data.table创建原始 airquality 数据的子集
时间: 2024-05-05 17:19:20 浏览: 183
可以使用以下代码来创建 airquality 数据的子集:
```
library(data.table)
data(airquality)
airquality.dt <- data.table(airquality)
subset <- airquality.dt[Ozone > 31 & Month == 5, .(Ozone, Solar.R)]
```
这将创建一个包含所有五月份 Ozone 值大于 31 的行以及对应的 Solar.R 值的数据表子集。
相关问题
优化优化data("airquality") solar.R <- airquality$Solar.R Solar.R1 <- rep(0,length(solar.R)) for (i in 1:length(Solar.R1)) { if(!is.na(solar.R)){ Solar.R1[i] <- solar.R[i] }esle{ Solar.R1[i] <- mean(solar.R[is.na(solar.R[1:(i-1)])]) } }
这段代码的作用是将 airquality 数据集中的 Solar.R 列中的缺失值用前面的非缺失值的均值填充。但是,这段代码有一个小错误,if(!is.na(solar.R)) 应该改为 if(!is.na(solar.R[i]))。正确的代码如下:
data("airquality")
solar.R <- airquality$Solar.R
Solar.R1 <- rep(0,length(solar.R))
for (i in 1:length(Solar.R1)) {
if(!is.na(solar.R[i])){
Solar.R1[i] <- solar.R[i]
}else{
Solar.R1[i] <- mean(solar.R[is.na(solar.R[1:(i-1)])])
}
}
优化data("airquality") solar.R <- airquality$Solar.R Solar.R1 <- rep(0,length(solar.R)) for (i in 1:length(Solar.R1)) { Solar.R2 <- Solar.R[i:(i-1)] if(!is.na(solar.R[i])){ Solar.R1[i] <- solar.R[i] }else{ Solar.R1[i] <- mean(solar.R[is.na(solar.R[1:(i-1)])]) } }
这段代码的作用是将 airquality 数据集中的 Solar.R 列中的缺失值替换为前面所有非缺失值的平均值,并将结果存储在 Solar.R1 中。优化的方法可以是使用 apply 函数代替 for 循环,如下所示:
Solar.R1 <- apply(X = airquality$Solar.R, MARGIN = 1, FUN = function(x) {
x[is.na(x)] <- mean(x, na.rm = TRUE)
return(x)
})
阅读全文