【发布时间】:2021-05-02 20:01:18
【问题描述】:
我正在寻找最优雅的方式循环并读取按日期组织的多个文件,如果基于多个键发生任何更改,则选择最新的值。
遗憾的是,我需要读取所有文件而不仅仅是最后一个文件的原因是因为文件中可能有一个我想捕获的实例消失了。
以下是文件外观的示例(我发布逗号分隔,即使它是固定宽度)
file_20200101.txt
key_1,key_2,value,date_as_numb
123,abc,100,20200101
456,def,200,20200101
789,xyz,100,20200101
100,foo,15,20200101
file_20200102.txt
key_1,key_2,value,date_as_numb
123,abc,50,20200102
456,def,500,20200102
789,xyz,300,20200102
以及所需输出的示例:
desired_df
key_1,key_2,value,date_as_numb
123,abc,50,20200102
456,def,500,20200102
789,xyz,300,20200102
100,foo,15,20200101
此外,我知道这里有一些代码可以读取多个文件,然后获得理想的输出,但我需要它在循环内。数据框太大而无法导入和绑定所有文件:
files <- list.files(path, pattern = ".txt")
df <- files %>%
map(function(f) {
print(f)
df <- fread(f)
df <- df %>% mutate(date_as_numb = f)
return(df)
}) %>% bind_rows()
df <- df %>%
mutate(file_date = as.numeric(str_remove_all(date_as_numb, ".*_"))) %>%
group_by(key_1, key_2) %>%
filter(date_as_numb == max(date_as_numb))
提前致谢!
【问题讨论】: