我有一个数据集列表,我想用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等等,并不代表数据集中的相同内容,我想应该提一下。