1

我有多个 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"]
4

1 回答 1

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纬度/经度的向量/列表

于 2013-08-06T16:03:24.100 回答