【问题标题】:R extract a single data from mutliple csv filesR从多个csv文件中提取单个数据
【发布时间】:2013-08-07 17:37:00
【问题描述】:

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

【问题讨论】:

  • 为了更快地查看data.table 包中的fread(但如果有的话,请注意日期列。它们将作为字符导入)。
  • 每个文件的列名是相同还是不同?
  • 大部分(如果不是全部)相同。我将分别处理它们不同的文件。谢谢。

标签: r csv lapply


【解决方案1】:

假设相对于您的系统的数据大小足够小(相对于您的系统) 为了一起适应内存,您可以使用列表一次性完成此操作

## 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 与纬度/经度的向量/列表一起使用

【讨论】:

  • 谢谢,它就像一个魅力!但是,我通过 PulledRows
猜你喜欢
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
  • 1970-01-01
  • 2022-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多