在R中 - 如何使用ID作为函数中的向量参数来对数据进行子集化?

时间:2015-02-15 15:24:38

标签: r

所以,我已经创建了以下代码,让我得到一系列具有相同ID的行的意思,所以如果我输入pollutemean(目录,污染物,id),我得到一个数字结果,但是,如果我输入了一个识别多个ID的矢量,即:1:18,因为这里污染(目录,污染物,1:15),代码中断。我怎样才能让它适用于这两个选项?

CODE:

pollutemean <- function(directory,pollutant,id)  {
    alldata <- lapply(list.files(directory, full.names=TRUE),read.csv,header=TRUE)
    alldatamerged<-do.call(rbind,alldata)

        if (pollutant=="sulfate") {
          allsulfatedata <- alldatamerged[c("Date","sulfate","ID")]
          allsulfatedatabyid<-allsulfatedata[allsulfatedata$"ID"==id,]
          completesulfatedatabyid<-na.omit(allsulfatedatabyid)
          print(mean(completesulfatedatabyid$sulfate))
        } 

输出:

  

pollutemean(&#34; specdata&#34;&#34;硫酸&#34;,8)   [1] 4.781354   pollutemean(&#34; specdata&#34;&#34;硫酸&#34; 1:8)   [1] 4.252498   警告信息:   在allsulfatedata $ ID == id:     较长的物体长度不是较短物体长度的倍数

1 个答案:

答案 0 :(得分:1)

试试这个:

allsulfatedatabyid<-allsulfatedata[allsulfatedata$ID %in% id, ]

或者:

allsulfatedatabyid<-allsulfatedata[id[which(id %in% allsulfatedata$ID)], ]