如何在R中的数据集上执行选择性rbind

时间:2017-04-02 08:58:22

标签: r append rbind

我正在尝试使用rbind以乡村方式附加不同的数据集。数据集列表是

data <- c('a1','a2','a3','b1','b2','bu3','bu4','c1','c3')
code <- c('a','b','bu',c)

数据的结构有点像这样 -

countrya1 <- c("a","a","a")
yeara1 <- c("1","1","1")
inca1 <- c("1","2","3")
a1 <- data.frame(countrya1,yeara1,inca1)
countrya2 <- c("a","a","a")
yeara2 <- c("2","2","2")
inca2 <- c("1","4","3")
a2 <- data.frame(countrya2,yeara2,inca2)
countryb1 <- c("b","b","b")
yearb1 <- c("1","1","1")
incb1 <- c("1","2","7")
b1 <- data.frame(countryb1,yearb1,incb1)
countryb2 <- c("b","b","b")
yearb2 <- c("2","2","2")
incb2 <- c("6","2","3")
b2 <- data.frame(countryb2,yearb2,incb2)

我用来组合所有数据集的代码如下 -

df=NULL
for (i in length(data)){
df1 <-read.dta(data[i])
df <-rbind(df,df1)
} 

这会将所有数据集绑定在df中。 有没有办法将a1,a2,a3绑定在一起,将b1,b2,b3绑定在一起,依此类推。简而言之,我想通过“代码”绑定数据集。有没有办法在R中做到这一点? 在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我们可以通过创建没有数字的组然后使用splitread.dta'数据',读取数据集和rbind同名数据集

lst <- lapply(split(data, sub("\\d+", "", data)), 
             function(x) do.call(rbind, lapply(x, read.dta)))

如果我们想使用'代码',请循环使用'code'

来使用grep
lapply(code, function(x) do.call(rbind, lapply(grep(x, data, value = TRUE), read.dta)))

数据

code <- c('a','b','bu','c')