我正在尝试使用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中做到这一点? 在此先感谢您的帮助。
答案 0 :(得分:0)
我们可以通过创建没有数字的组然后使用split
来read.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')