在R中,如何在管道表达式中重新排序tbl的变量?

时间:2018-05-08 10:06:15

标签: r dataframe dplyr piping

我已经使用以下管道表达式加载了.csv文件,转换为tbl,重命名变量,变异等等:

h2020orgs <- read.csv2(file="C:/Users/Geoff/Desktop/Personal/DataCamp/R/R projects/Horizon_2020_orgs_data/cordis_h2020_orgs.csv") %>%
  tbl_df() %>%
  select(1:15) %>%
  rename(projectRcn = ï..projectRcn,
         orgType = activityType,
         orgRole = role,
         orgID = id,
         orgName = name,
         orgShortName = shortName) %>%
  mutate(orgTypeFull = recode(orgType,
                              HES = "Higher education",
                              OTH = "Other",
                              PRC = "Private company",
                              PUB = "Public body",
                              REC = "Research centre"))

使用名称(h2020orgs)可以看到变量索引:

names(h2020orgs)
 [1] "projectRcn"         "projectID"          "projectAcronym"     "orgRole"           
 [5] "orgID"              "orgName"            "orgShortName"       "orgType"           
 [9] "endOfParticipation" "ecContribution"     "country"            "street"            
[13] "city"               "postCode"           "organizationUrl"    "orgTypeFull"

我想移动&#34; orgTypeFull&#34;因此它与&#34; orgType&#34;相邻(紧接着)。我知道我可以使用以下独立调用来执行此操作:h2020orgs <- h2020orgs[, c(...)]但是有没有办法在上面的管道表达式中包含它?

3 个答案:

答案 0 :(得分:1)

使用select([...], orgType, orgTypeFull, [...]),其中[...]表示“将其他列名放在那里”。

答案 1 :(得分:0)

您可以使用select()中的dplyr对名称或索引进行重新排序。

使用索引:

... %>% select(1:8, 16, 9:15)

答案 2 :(得分:0)

您可以使用 data.table 包中的setcolorder

h2020orgs %>% setcolorder(c(1:8,16:9))

或没有管道:

setcolorder(h2020orgs, c(1:8,16:9))