如何导入两个不同文件夹中的所有txt文件,将相应的文件合并为单个文件并在R中写入单独的文件?

时间:2017-04-13 05:14:14

标签: r

我从400个站点获得了35年的日常温度和相对湿度(分数)数据。数据存储在每个参数和每个站的不同文件中。温度数据存储在文件名上,如t264797.txt,t264800.txt,t264803.txt ......以及存储在文件名中的相对湿度数据,如r264797.txt,r264800.txt,r264803.txt .... ...文件名的数字部分是该站的纬度和经度。

温度数据的格式是

19790101
23.985,6.152
25.539,8.900
26.492,10.806
.
.

此处第一行是开始日期,后面是以“,”分隔的每日最高和最低温度数据。

相对湿度数据的格式为

19790101
0.416
0.323
0.394
.
.

这里第一行也是开始日期,然后是分数中的每日相对湿度数据。所有数据都有相同的开始日期,全部为35年。

现在为我的水文模型提供输入我需要为每个站点提供一个文件,其中包含同一文件中的温度和相对湿度(百分比)数据,数据应按空格分隔。例如,数据应采用此格式

23.985 6.152 41.6
25.539 8.9 32.3
26.492 10.806 39.4
.
.

我是R的新手并阅读其他帖子我发现我可以通过运行以下语法为单站做到这一点

temp <- read.csv("D:/krb/wegen/swatintdata/temp/t264797.txt", header=FALSE, skip=1)
huf <- read.table("D:/krb/wegen/swatintdata/rh/r264797.txt", header=TRUE)
hup <-huf*100
dewfile <- cbind(temp,hup)
write.table(dewfile,"D:/krb/wegen/swatintdata/dew/d264797.txt", row.names=F, col.name=F )

这适用于单站。现在我想编写一个脚本,将每个站温度和相对湿度数据组合在单独的文件中,并为每个站写一个文件,用于所有400站:)。组合数据的文件名应类似于上面的语法,即d264797.txt,d264800.txt,d264803.txt ....

有帮助吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

假设您所有文件位于同一文件夹中,请将所有文件名作为

对象获取
all <- list.files(pattern="\\.txt", full=T)

然后使用

将文件作为列表读取
lapply(all, read.table, header=T, sep="\t")

这将允许您操作R环境中的所有数据,包括绑定和保存它们。

以下是读取两个虹膜数据集并使用plyr::ldply命令将它们绑定在一起的简化示例:

write.table(iris, "iris01.txt", sep="\t", row.names=F)
write.table(iris, "iris02.txt", sep="\t", row.names=F)
all <- list.files(pattern="\\.txt", full=T)
ldply(all, read.table, header=T, sep="\t")