我是一名学生参加R.我的目录里面有很多文件 . 我需要编写一个名为'pollutantmean'的函数来计算数据集中污染物(硫酸盐或硝酸盐)的平均值(见下面的例子),该函数有三个参数:'directory','污染物'和'id' .
作为我的函数的一部分,我已成功读取所有文件并将它们放入单个文件中,以便我现在可以进行一些计算,如中位数,平均值等 . 我使用rbind和for循环来创建data.frame .
但问题是,在创建数据框后,我现在需要找到一种方法,通过我的数据框中的一列或多列来对我的数据进行子集化,第2列或第3列
我得到的功能原型如下:
pollutantmean < - function(directory,pollutant,id = 1:332){##'directory'是长度为1的字符向量,表示CSV文件的位置##'污染物'是长度为1的字符向量,表示名称我们将计算平均值的污染物; “硫酸盐”或“硝酸盐” . ##'id'是一个整数向量,表示要使用的监视器ID号##返回'id'向量中所有监视器列表中污染物的平均值(忽略NA值)
以下是此函数输出的示例:
pollutantmean("specdata", "sulfate", 1:10)
## [1] 4.064
pollutantmean("specdata", "nitrate", 70:72)
## [1] 1.706
pollutantmean("specdata", "nitrate", 23)
## [1] 1.281
这是我作为第一个实验,仅使用一个ID和一种污染物类型(硫酸盐)
pollutantmean <- function(directory, pollutant, ID = 1:332) {
data <- read.csv("specdata/001.csv")
subset(data, data$ID == 1)
mean(data$sulfate, na.rm = TRUE)
}
pollutantmean("specdata", "sulfate", 1)
[1] 3.880701
我无法弄清楚怎么做是计算污染物类型的平均值,“硫酸盐”或“硝酸盐”
有人可以就我的下一步提供一些建议吗?
这是我的数据的一个例子
"Date","sulfate","nitrate","ID"
"2003-01-01",NA,NA,1
"2003-01-02",NA,NA,1
"2003-01-03",NA,NA,1
"2003-01-04",NA,NA,1
"2003-01-05",NA,NA,1
2 回答
我认为以下内容对您有所帮助..它也可以帮助您进行子集化...
以下方法可能会有所帮助: