气象数据处理-R语言批量读取txt数据并合并
处理地面气候资料日值数据集v3.0
数据集以月为单位存储,每个月是一个单独的文件,上图、
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN2XjlGcjAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLz0ERNNTTE5kMNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLzATMyIDMzATM4IzMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
在处理数据过程中,我们往往会将单独的数据合并到一起做进一步分析,R语言仅需两步,可以轻松实现(替代 打开文本–复制粘贴—吐血)
setwd("E:/Rstation/test2")
library(tidyverse)
library(readxl)
library(writexl)
#筛选出所有数据文件,以“SURF_CLI_CHN_MUL_DAY-PRE”为搜索关键词-----
flies=list.files(pattern = "SURF_CLI_CHN_MUL_DAY-PRE")
# 批量读取,按行合并
df = map_dfr(flies, read.table)
#写出数据
write_table(df, "xxx.txt")
最终结果(可根据需要导出)
刚试了下以上方法,运行速度有点慢啊,参考别人代码,写了个循环,这个运行速度还挺快。
filest <- list.files(pattern = "SURF_CLI_CHN_MUL_DAY-TEM")
filelent <- length(filest)
newdatat <- c()
for (i in 1:3) {
temp <- read.table(filest[i])
newdatat=rbind(newdatat,temp)
}
names(newdatat) <- c("station", "lat", "lon", "eleva", "year", "month", "day", "avet", "maxt", "mint")
head(newdatat)
> head(newdatat)
station lat lon eleva year month day avet maxt mint
1 50136 5258 12231 4330 2010 1 1 -311 -254 -385
2 50136 5258 12231 4330 2010 1 2 -314 -238 -367
3 50136 5258 12231 4330 2010 1 3 -288 -229 -332
4 50136 5258 12231 4330 2010 1 4 -309 -227 -362
读取文本文件,以空格为分隔符,可以直接写read.table(xxx.txt),不然会出错。