首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R 3.1.0函数取NA值列的平均值

R 3.1.0函数取NA值列的平均值
EN

Stack Overflow用户
提问于 2014-06-16 04:51:08
回答 1查看 2.6K关注 0票数 0

我有一套CSV文件。每个CSV文件都有一个唯一的ID,还有“日期”、“硫酸盐”、“硝酸盐”等其他列。这是关于空气污染的数据。

该函数必须使用3个参数:“目录”、“污染物”、"id“。

这是原始数据格式(用于001.csv文件):

代码语言:javascript
复制
Date        Sulfate    Nitrate    ID
2013-02-04  2.27       NA         1
2013-02-05  NA         1.15       1

到目前为止,这是我的职责:

代码语言:javascript
复制
pollutantmean <- function (directory, pollutant, id = 1:332){
  files_full <- list.files (directory, full.names = TRUE)
  dat <- data.frame ()
  for (i in id){
    dat <- rbind (dat, files_full[i])
  }
  datasub <- dat[,pollutant]
  }

1)用户输入以下内容:“污染”(“规范数据”,“硝酸盐”,70:72)

他们应该得到(欲望输出):

1.706

相反,我得到了:

代码语言:javascript
复制
Error in `[.data.frame`(dat, , pollutant) : undefined columns selected 

 In addition: Warning messages:
1: In `[<-.factor`(`*tmp*`, ri, value = "specdata/071.csv") :
  invalid factor level, NA generated
2: In `[<-.factor`(`*tmp*`, ri, value = "specdata/072.csv") :
  invalid factor level, NA generated

这些错误意味着什么?

EN

回答 1

Stack Overflow用户

发布于 2014-06-16 06:37:06

我发现你的代码有两个问题

  1. list.files只是列出了你的文件。它不会将文件读取到工作空间
  2. 在设置data.frame时,必须将列名指定为字符。例: dat,"column_name“

我已经修改了这个函数,让你试试这个。

代码语言:javascript
复制
    pollutantmean <- function (directory, pollutant, id = 1:332){
      files_full <- list.files (directory, full.names = TRUE)
      dat <- data.frame()
      for (i in id){

        dat <- rbind (dat, read.table(files_full[i],sep="",.......))
      }
      datasub <- dat[,"pollutant"]

  }

更快的方法是使用data.table包。为了在这里警告您,您只需要给子集data.table提供列名,而不是作为字符。例: dat,column_name

代码语言:javascript
复制
    pollutantmean <- function (directory, pollutant, id = 1:332){
      library(data.table)

      files_full <- list.files (directory, full.names = TRUE)
      dat_list <- list()
      for (i in id){

        dat_list[[i]] <- fread(files_full[i],sep="",.......)
      }
      dat <- rbindlist(dat_list)
      return(mean(dat[,pollutant]))

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

https://stackoverflow.com/questions/24236811

复制
相关文章

相似问题

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