将变量重命名并添加到R中的数据集列表

时间:2016-07-08 11:58:45

标签: r variables if-statement for-loop dataset

我有一个数据集列表,我想用R对这些数据集做一些更改。

首先,如果存在变量"mac_sector",我想将其重命名为"sector". *编辑:它总是说找不到mac_sector,即使它至少存在于其中一个数据集中。此外,如果if(exists())找不到某些内容,那么只继续使用脚本的其余部分,还是终止脚本?

其次,如果没有名为"mac_sector""sector"的变量,我想创建一个名为"sector"的新列变量,并将"total"作为值。

最后,我重新排列列,因为我希望变量"sector"成为每个数据集中的第3列。

我在下面编写了脚本(有些部分甚至不是R语言),但显然它不起作用,所以我希望你们中的一些人能够帮助我。

我也想将这些更改保存到相应的数据集中,但我不知道在这种特殊情况下如何进行更改? (我知道save()命令,但我觉得它在这里不起作用)

setwd("C:\\Users\\files")
mylist = list.files(pattern="*.dta")


    #Loop through all of the datasets in C:\\Users\\files
    #Reading the datasets into R

     df <- lapply(mylist, read.dta13)

    #Naming the list of elemenents to match the files for convenience 
    names(df) <- gsub("\\.dta$", "", mylist)

      # If column mac_sector exists, rename to sector
      if(exists(mac_sector, df)){
      df <- rename(df, c(mac_sector="sector"))
      }

      # If column variable with pattern("sector") does not exist, create variable sector=total
      if(does not exist(pattern="sector")){
        sector <- c("total")
        df$sector <- sector
      }

      # rearrange variable, sector must be placed 3rd
      df <- arrange.vars(df, c("sector" = 3))

编辑: 我希望所有数据集看起来都像这样(有些已经看起来像这样):

Country|sector| Variable1| Variable2| Variable3|....
  GER  |  M   |   value  |   value  |   value  |....
  BELG |  K   |   value  |   value  |   value  |....
        and so on.

现在其中一些看起来像这样:

Country|mac_sector| Variable1| Variable2| Variable3|....
   GER |      F   |   value  |   value  |   value  |....
  BELG |      L   |   value  |   value  |   value  |....

在这种情况下,我想将mac_sector重命名为sector。

他们也可以这样:

            Country| Variable1| Variable2| Variable3|....
              GER  |   value  |   value  |   value  |....
              BELG |   value  |   value  |   value  |....

在这种情况下,我想添加一个变量sector = total:

    Country|sector| Variable1| Variable2| Variable3|....
      GER  | total|   value  |   value  |   value  |....
      BELG | total|   value  |   value  |   value  |....

* Variable1,Variable2,Variable3等等,并不代表数据集中的相同内容,我想应该提一下。

0 个答案:

没有答案