【发布时间】:2015-03-12 08:05:35
【问题描述】:
我有一个包含大约 400 个具有相同结构的文件的文件夹。这些文件中的每一个都包含 4 个没有标题的列,对应于 4 个气候变量。我需要根据文件名在每个文件中包含两个新列。名称的结构是 MeteoData_PXCY,其中 X=CODE_PLOT 和 Y=CODE_COUNTRY。一旦我有了这两个新列,我需要读取一个数据集中的所有文件,并按CODE_PLOT 和CODE_COUNTRY 聚合分组以计算平均值。因此,最终输出为 400 行,CODE_PLOT 和 CODE_COUNTRY 各一行。
示例文件 MeteoData_P1C1.csv
32509 33.91 2.9155 4494.5 13.46
32540 63.03 3.9718 6520.8 25.12
32568 71.68 8.7874 11587 58.67
32599 116.38 7.8683 13286 62.58
32629 31.12 16.097 23555 135.35
32660 56.56 16.481 21886 130.24
32690 68.59 19.737 21677 141.15
32721 55.55 18.755 18830 117.39
32752 59.88 15.598 13579 81.06
32782 43.43 12.361 8622.2 54.57
MeteoData_P109C19.csv 示例
32509 18.17 -0.70355 1413.5 9.93
32540 78 -0.43607 3574.6 10.46
32568 74.43 0.38645 7478.5 22.53
32599 73.19 2.5743 12352 42.85
32629 36.75 9.4852 21244 105.57
32660 61.65 13.753 21586 117.3
32690 86.16 15.991 20452 127.89
32721 98.02 12.713 13981 76.73
32752 32.14 9.9547 10850 53.13
32782 53.46 4.4252 5041.7 21.46
在最终输出中我应该有这个结构(没有“;”):
Date; Precip; Temp; Rad; Pet; CODE_PLOT; CODE_COUNTRY
32540; 63.03; 3.9718; 6520.8; 25.12; 1; 1
32568; 71.68; 8.7874; 11587; 58.67; 9; 19
目前,我有:
setwd("MeteoData”) # Folder in which all the files are into
filenames <- list.files(pattern=".csv")
clim <- lapply(filenames, function(x) read.csv(file=x, header=FALSE))
【问题讨论】:
-
嗯,你试过什么?
-
我知道如何读取文件夹中的所有文件,但不知道如何根据文件名标记它们
-
请添加您已有的代码
-
帖子中添加的代码
-
虽然 lapply 通常是一个好主意,但在这种情况下,循环将是首选,因为您需要操纵单个文件名以获得 C 和 P 值(请参阅我的答案)。
标签: r