循环遍历文件并根据多列计算具有有效值的行

时间:2017-05-16 08:04:29

标签: r loops

我有大量具有相同结构的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

1 个答案:

答案 0 :(得分:0)

循环遍历文件并根据多列计算具有有效值的行 `你的代码的很大一部分是写几行,我添加了几行代码,这应该工作。 {

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