如何在 R 中对数据集执行选择性 rbind
How to perform selective rbind on datasets in R
我正在尝试使用 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 绑定在一起等等。简而言之,我想通过 'code' 绑定数据集。有没有办法在 R 中做到这一点?
先谢谢您的帮助。
我们可以 split
'data' 通过创建一个没有数字的组,然后使用 read.dta
,读取数据集和 rbind
同名数据集
lst <- lapply(split(data, sub("\d+", "", data)),
function(x) do.call(rbind, lapply(x, read.dta)))
如果我们想使用 'code',则通过循环 'code'
使用 grep
lapply(code, function(x) do.call(rbind, lapply(grep(x, data, value = TRUE), read.dta)))
数据
code <- c('a','b','bu','c')
我正在尝试使用 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 绑定在一起等等。简而言之,我想通过 'code' 绑定数据集。有没有办法在 R 中做到这一点? 先谢谢您的帮助。
我们可以 split
'data' 通过创建一个没有数字的组,然后使用 read.dta
,读取数据集和 rbind
同名数据集
lst <- lapply(split(data, sub("\d+", "", data)),
function(x) do.call(rbind, lapply(x, read.dta)))
如果我们想使用 'code',则通过循环 'code'
使用grep
lapply(code, function(x) do.call(rbind, lapply(grep(x, data, value = TRUE), read.dta)))
数据
code <- c('a','b','bu','c')