使用xlsx工作簿重命名变量列表

时间:2018-05-03 20:06:42

标签: r excel dplyr rename tidyr

希望somene可以帮助我。我希望使用xlsx工作簿重命名一些变量名作为R中的数据映射。如何使用我的数据映射将R数据集中的变量名重命名为New_Name下datampay中定义的名称。这是可能的吗?

   > #call dataset
    > df<-datasets::mtcars
    > #head dataset
    > head(mtcars)
                       mpg cyl disp  hp drat    wt  qsec vs am gear carb
    Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
    Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
    Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
    Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
    Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
    Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
    > #Call datamap
    > datamap <-read_xlsx("...")
    > #head datamap
    > head(datamap)
    # A tibble: 6 x 2
      Original_Name New_Name      
      <chr>         <chr>         
    1 mpg           MilesPerGallon
    2 cyl           Cylinder      
    3 disp          Display       
    4 hp            HorsePower    
    5 drat          D             
    6 wt            W    

提前感谢任何能够提供帮助的人

3 个答案:

答案 0 :(得分:1)

读完xlsx工作簿后,基本上会有一个旧名称向量和一个新名称的向量(datamap$Original_Namedatamap$New_Name)。一旦你这样看,这个问题在这里有很多答案:Rename multiple columns by names

但如果您确信新名称的顺序正确,那么您可以简单地执行

names(DF) <- datamap$New_Name

或者如果你需要排队

names(DF)[match(datamap$Original_Name, names(DF))] <- datamap$New_Name

或许多使用data.table等软件包的其他方式,如其他问题所述。

答案 1 :(得分:0)

有很多不同的方法可以做到这一点。我通常只是重命名列名。你可以这样解决你的问题:

colnames(mtcars)[1:6] <- datamap$New_Name

我认为这不是最强大的解决方案。如果你有这么多的列,你不一定能通过索引来计算和做,你可能会做一些比较漂亮的事情,如

colnames(mtcars)[colnames(mtcars) %in% datamap$New_Name] <- datamap$New_Name[colnames(mtcars) %in% datamap$New_Name]

答案 2 :(得分:0)

我认为,所有OP想要的是替换数据帧的几个列名。旧列与新列名称的映射在xls中定义。映射已加载到tibble

有很多方法可以达到预期的结果,但简单的ifelse应该足以提供所需的结果:

df<-datasets::mtcars

library(readxl)

datamap <-read_xlsx("D:/test.xlsx")


names(df) <- ifelse(names(df) %in% datamap$Original_Name, datamap$New_Name, names(df) )

head(df)
#                   MilesPerGallon Cylinder Display HorsePower    D     W  qsec vs am gear carb
# Mazda RX4                   21.0        6     160        110 3.90 2.620 16.46  0  1    4    4
# Mazda RX4 Wag               21.0        6     160        110 3.90 2.875 17.02  0  1    4    4
# Datsun 710                  22.8        4     108         93 3.85 2.320 18.61  1  1    4    1
# Hornet 4 Drive              21.4        6     258        110 3.08 3.215 19.44  1  0    3    1
# Hornet Sportabout           18.7        8     360        175 3.15 3.440 17.02  0  0    3    2
# Valiant                     18.1        6     225        105 2.76 3.460 20.22  1  0    3    1