R 选择特定列并将csv名称添加到最终csv文件

R 选择特定列并将csv名称添加到最终csv文件,r,dplyr,R,Dplyr,我试图从不同子目录中的许多csv文件中提取相同的前16列数据,并将csv文件名添加到最终csv的每一行。我的代码: getwd() root<-list.dirs(".", recursive=TRUE) # get list of files ending in csv in directory root dir(root, pattern='csv$', recursive = TRUE, full.names = TRUE) %>% # read files into data

我试图从不同子目录中的许多csv文件中提取相同的前16列数据,并将csv文件名添加到最终csv的每一行。我的代码:

getwd()
root<-list.dirs(".", recursive=TRUE)
# get list of files ending in csv in directory root
dir(root, pattern='csv$', recursive = TRUE, full.names = TRUE) %>%
# read files into data frames
lapply(FUN = read.csv) %>%
# bind all data frames into a single data frame
rbind_all %>%
# write into a single csv file
write.csv("all.csv")
getwd()
根%
#将文件读入数据帧
lappy(FUN=read.csv)%>%
#将所有数据帧绑定到单个数据帧中
rbind\U所有%>%
#写入单个csv文件
write.csv(“all.csv”)
我想知道在哪里放置select列并添加文件名代码

答复:

getwd()
root<-list.dirs(".", recursive=TRUE)
# get list of files ending in csv in directory root
dir(root, pattern='csv$', recursive = TRUE, full.names = TRUE) %>%
# read files into data frames, select first 16 columns and add filename 
lapply(FUN = function(p) read.csv(p) %>% select(1:16) %>%    

mutate(file_name=p)) %>%     
# bind all data frames into a single data frame
rbind_all %>%
# write into a single csv file
write.csv("all.csv")
getwd()
根%
#将文件读入数据框,选择前16列并添加文件名
lapply(FUN=函数(p)read.csv(p)%%>%select(1:16)%%>%
变异(文件名=p))%>%
#将所有数据帧绑定到单个数据帧中
rbind\U所有%>%
#写入单个csv文件
write.csv(“all.csv”)

您应该在使用Lappy时执行此操作,因为这是您可以访问文件名/路径的最后一步:

dir(root, pattern='csv$', recursive = TRUE, full.names = TRUE) %>%
  lapply(FUN = function(p) read.csv(p) %>% select(1:16) %>% mutate(file_name=p)) %>%
  bind_rows() %>%
  write.csv("all.csv")

我会在
lappy
步骤中执行此操作,这是您最后一次可以访问文件名/路径。可能是这样的:
lappy(FUN=function(p)read.csv(p)%%>%select(1:16)%%>%mutate(file_name=p))%%>%
谢谢你,斯科亚!我使用answerUse
bind_rows
而不是
rbind_all
进行了修改,请参见此