氣象資料處理-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),不然會出錯。