我试图在R内部实现一个循环以检索一系列数据帧。此外,我想在循环内编辑数据框以整理数据并将其设置为面板数据格式。
因此,我使用assign可以在循环内分配名称,这样我就可以了:
for(i in 1:2){
assign(paste("df", i, sep = ""), sim_inf10_mun(linha = "Município", coluna = "Ano do Óbito", periodo = c(1996:2016), municipio = "all",
capitulo_cid10 = i))
}
“ sim_inf10_mun
”只是一个使一些数据在线并制作一个数据框的函数(它需要library(“ datasus”))。例如,在此示例中,我得到两个数据帧:df1和df2。
我想在数据帧中进行以下更改,例如df1,
df1 <- df1[-1,]
df1 <- df1[,-ncol(df1)]
df1 <- gather(df1, "ano", "deaths_1", 2:ncol(df1))
names(df1)[1]<-"cod_mun"
df1 <- transform(df1, cod_mun = substr(cod_mun, 1, 6))
这些是简单的更改,涉及变量名称,删除某些行,某些列等。
但是,我不知道如何在循环内调用df1。我至少从表面上理解了“分配”功能的工作原理,但是我看不到如何再次使用它来进行所需的更改。
答案 0 :(得分:1)
我已经实现了想要的目标。我将其张贴在这里,以防其他人发现这一困难。
通过简单地使用列表即可实现。
data_list <- list()
for(i in 1:22){
data_list[[i]] <- sim_inf10_mun(linha = "Município", coluna = "Ano do Óbito", periodo = c(1996:2016), municipio = "all",
capitulo_cid10 = i)
data_list[[i]] <- data.frame(data_list[i])
data_list[[i]] <- data_list[[i]][-1,]
data_list[[i]] <- data_list[[i]][,-ncol(data_list[[i]])]
data_list[[i]] <- gather(data_list[[i]], "ano", "deaths_1", 2:ncol(data_list[[i]]))
names(data_list[[i]])[1]<-"cod_mun"
data_list[[i]] <- transform(data_list[[i]], cod_mun = substr(cod_mun, 1, 6))
}