R从多个csv文件中提取单个数据

时间:2013-08-06 15:50:35

标签: r csv lapply

我有多个csv文件(超过100个)。每个文件代表一个时间段。在每个文件中,有29行需要滑行(文本行)。在第30行,我有一个温度矩阵作为纬度和经度坐标的函数。例如:在纬度68.80和经度48.40268,温度是5.94。

所以,我想在每个时间段(对于每个文件)的纬度和经度坐标的特定组合中提取温度。

我可以为单个文件编写代码,但我很害怕我不知道如何在循环中执行它或如何使其更快。

感谢任何帮助,谢谢。很抱歉,如果这与其他问题相似,我会阅读有关该主题的内容,但它似乎不符合我的问题。

一个文件的代码:

filenames <- list.files(path="E:/Documents...")
fileone <- read.csv(filenames[1], skip=29, header=T, sep=";")
names(fileone) <- c("Lat", "68.88", "68.86", "68.85", "68.83", "68.82", "68.80", "68.79", "68.77", "68.76", "68.74", "68.73", "68.71")
Tempone <- fileone[which(fileone$Lat==48.40268), "68.80"]

1 个答案:

答案 0 :(得分:3)

假设相对于您的系统的数据大小足够小(相对于您的系统) 为了完全融入记忆,你可以使用列表一次性完成这个任务

## Grab the filienames, just like you're doing
filenames <- list.files(path="E:/Documents...")

## Assuming all columns have the same column names
c.nms <- c("Lat", "68.88", "68.86", "68.85", "68.83", "68.82", "68.80", "68.79", "68.77", "68.76", "68.74", "68.73", "68.71")


## Import them all in one shot, as a list of data.frames
AllData <- lapply(filenames, read.table, 
      skip=29, header=TRUE, sep=";", row.names=NULL, col.names=c.nms)

## Then to get all of your rows
PulledRows <- 
lapply(AllData, function(DF) 
    DF[fileone$Lat==48.40268, "68.80"]
  )

如果您为每个文件提取不同的纬度/经度,则可以将mapply与纬度/长度的向量/列表一起使用