我有一个数据列表,我想按名称将它们排序到单个数据框中。
列表:
[1]
Name Year Wage
John 2000 500
Paul 2000 600
Peter 2000 800
Mary 2000 700
Kai 2000 800
[2]
Name Year Wage
John 2005 600
Paul 2005 700
Peter 2005 1000
Mary 2005 750
Kai 2005 850
[3]
Name Year Wage
John 2010 1600
Paul 2010 900
Peter 2010 1200
Mary 2010 950
Kai 2010 950
[n]
Name Year Wage
John 2011 1800
Paul 2011 1000
Peter 2011 1600
Mary 2011 850
Kai 2011 1050
所需数据框1:
Name Year Wage
John 2000 500
John 2005 600
John 2010 1600
John 2011 1800
所需数据框2:
Name Year Wage
Paul 2000 600
Paul 2005 700
Paul 2010 900
Paul 2011 1000
并且每个名称都有自己的.csv输出。
我试过
listy <- list.files(path = "./",pattern = "*_output.csv", full.names = FALSE,recursive = TRUE)
lapply(listy, read.csv)
然后我不知道如何继续。谢谢你的帮助。
答案 0 :(得分:1)
我们可以rbind
list
data.frame
个split
成一个数据集,然后执行library(dplyr)
lstN <- bind_rows(lst) %>%
split(., .$Name)
lapply(names(lstN), function(nm) write.csv(lstN[[nm]], paste0(nm, ".csv"),
row.names = FALSE, quote = FALSE)
lst <- lapply(listy, read.csv, stringsAsFactors=FALSE)
select right(col, position('-' in reverse(col)) - 1)