R通过数据列表输出每个数据帧

时间:2016-09-04 13:20:31

标签: r list dataframe

我有一个数据列表,我想按名称将它们排序到单个数据框中。

列表:

[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)

然后我不知道如何继续。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我们可以rbind list data.framesplit成一个数据集,然后执行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)
相关问题