首页 > 解决方案 > 指定列应放置在 r 中的位置

问题描述

当我创建一个新变量时,有没有办法在函数中指定放置它的位置?

现在,它将它添加到数据框的末尾,但是为了便于在 Excel 中查看,例如,我想在我用于计算的列旁边放置一个新的计算列。

这是一个代码示例:

rawdata2 <- (rawdata1 %>% unite(location, locations1,locations2, locations3, 
                           na.rm = TRUE, remove=TRUE) 
                %>%  select(-location7, -location16)
                %>% unite(Sector, Sectors, na.rm=TRUE, remove=TRUE)
                %>% unite(TypeofSpace, TypesofSpace, type.of.spaceOther, na.rm=TRUE, 
remove=TRUE)
                
        )

标签: rcalculated-columns

解决方案


您可以重新排列数据框中的列。看起来你dplyr::select在你的例子中使用。

library(dplyr)
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

mtcars2 <- mtcars %>%
      select(mpg, carb, everything())  ## moves carb up behind mpg
head(mtcars2)
#                   mpg carb cyl disp  hp drat    wt  qsec vs am gear
# Mazda RX4         21.0    4   6  160 110 3.90 2.620 16.46  0  1    4
# Mazda RX4 Wag     21.0    4   6  160 110 3.90 2.875 17.02  0  1    4
# Datsun 710        22.8    1   4  108  93 3.85 2.320 18.61  1  1    4
# Hornet 4 Drive    21.4    1   6  258 110 3.08 3.215 19.44  1  0    3
# Hornet Sportabout 18.7    2   8  360 175 3.15 3.440 17.02  0  0    3
# Valiant           18.1    1   6  225 105 2.76 3.460 20.22  1  0    3

您可以对基本子集执行相同的操作,例如,对于具有 11 列的数据框,您可以将第 11 个移到第二个后面

mtcars3 <- mtcars[,c(1,11,2:10)]
identical(mtcars2, mtcars3)
# [1] TRUE

推荐阅读