在循环内编辑数据框

时间:2018-11-08 03:32:21

标签: r loops dataframe

我试图在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。我至少从表面上理解了“分配”功能的工作原理,但是我看不到如何再次使用它来进行所需的更改。

1 个答案:

答案 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))
}