如何解决整齐的R方式,使用列中的信息导入CSV
我有一个数据框,其中包含来自各种计算的行。每行都有一个目录和一个标签。我想从每一行的目录中读取一个文件并分配标签。例如
dfs <- tribble(~dir,~label,"d123","dogs","c123","cats","b123","birds")
foodcsv <- "food.csv"
drinkcsv <- "drink.csv"
animalfoods <- mutate(dfs,fname=paste0(dir,"/csv_out/",foodcsv) %>%
????? rowwise/map/lapply/something(read_csv(fname) %>% mutate(label=label)) ???? %>%
bind_rows
所以???中的部分是我不知道的。基础文件都具有相同的列标题。 最终我想要类似的东西
id consumed label
dog1 chow1 dog #from d123/csv_out/food.csv
dog2 chow2 dog
cat1 chow3 cat #from c123/csv_out/food.csv
...
在这种情况下,我们将使用例如d123 / csv_out / food.csv:
id,consumed
dog1,chow1
dog2,chow2
解决方法
尝试这种purrr
方法:
library(purrr)
library(dplyr)
result <- map_df(c(foodcsv,drinkcsv),function(x) {
all_files <- paste0(dfs$dir,"/csv_out/",x)
map2_df(all_files,dfs$label,~read.csv(.x) %>% mutate(label = .y))
})
如果我已正确理解您的意见,foodcsv
和drinkcsv
出现在dfs$dir
中的所有目录中。因此,对于此示例,您将总共获得6个文件。您可以使用map
来读取foodcsv
和drinkcsv
的所有文件,向其中添加相应的labels
并将所有数据帧绑定在一起。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。