【问题标题】:loop through files and count rows with valid values based on multiple columns循环遍历文件并根据多列计算具有有效值的行
【发布时间】:2017-05-16 08:04:29
【问题描述】:

我有大量结构相同的 csv 文件。 这些文件中的每一个都有四列:A、B、C、D。 B 和 C 列有一定的数据。 D列有每个文件的ID。 我必须计算用户选择的每个文件中 B 列和 C 列中具有有效(即非“NA”)值的行数。 目标结果是一个包含 ID 和计数的两列数据框。 我已经开始写一个循环,但我卡住了......有人可以帮我吗?我对 R 很陌生。

path = "R:\\A\\data\\"
fileList = list.files(path)
file.names = as.numeric(sub("\\.csv$","",fileList))
selected.files = fileList[match(D,file.names)]
n=length(selected.files)
for (i in 1:n) {
  Data<-read.csv(paste(path,selected.files[i], sep=""))
  count1<-length(which(Data[i]$B!="NA"&Data[i]$C!="NA"))
}
result<-c(id, count1)
result

【问题讨论】:

    标签: r loops


    【解决方案1】:

    遍历文件并根据多列计算具有有效值的行 `你的大部分代码只写了几行我已经添加了几行代码,这应该可以工作。 {

    path = "R:\\A\\data\\"    
    fileList = list.files(path)  
    file.names = as.numeric(sub("\\.csv$","",fileList))   
    selected.files = fileList[match(D,file.names)]   
    n=length(selected.files)  
    for (i in 1:n) {
      Data<-read.csv(paste(path,selected.files[i], sep=""))
      count1<-nrow(Data[complete.cases(Data$B,Data$C),])
      id<-unique(Data$B)
      result<-rbind(c(id, count1))
    }
    
    result
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      相关资源
      最近更新 更多