我的目标是从嵌套子文件夹中的多个 csv (409) 导入特定行。每个 csv 对应于特定月份测量的降雨量。在每个 csv 中,行对应于特定位置的雨量站。每日降雨量显示在下图最右侧的栏中。由于月份的长度不同,因此每个 csv 文件中的列数各不相同。
对于给定的雨量计,我想提取适当的数据行并转换为具有每日时间戳和雨量的新 df (站点 ID、纬度、经度和海拔也可以转换,但不能转换)在这一点上同样重要)。目标是为每个感兴趣的雨量计创建一个 df,如下所示:。
预先感谢您的想法!
以下没有达到我想要的效果:
dir("station_data", full.names = T) %>%
df<- map_df(read_csv)bind_rows(lapply(csv_files, read_csv))
如果您有这两个 csv 文件,为期两个月
id,2006.08.01,2006.08.02,2006.08.03
U1,5.69,12.36,8.21
U2,4.69,12.56,9.21
U3,4.69,1.36,82.21
id,2006.09.01,2006.09.02,2006.09.03
U1,3.69,17.36,8.21
U2,4.69,16.56,2.21
U3,3.69,10.36,182.21
您可以使用这个Miller命令
mlr --csv filter '$id=="U1"' then reshape -r '[0-9]{4}' -o d,v 01.csv 02.csv
获得
id | d | v |
---|---|---|
U1 | 2006.08.01 | 5.69 |
U1 | 2006.08.02 | 12.36 |
U1 | 2006.08.03 | 8.21 |
U1 | 2006.09.01 | 3.69 |
U1 | 2006.09.02 | 17.36 |
U1 | 2006.09.03 | 8.21 |
一些注意事项:
filter '$id=="U1"'
过滤雨量计“U1”reshape -r '[0-9]{4}' -o d,v
将所有包含 4 个数字的字段从宽变为长。 -o d,v
设置输出字段名称