переименование столбцов в R с символом `-` - PullRequest
1 голос
/ 01 апреля 2019
temp <- data.frame(re_ply = rnorm(10), total_ID = rnorm(10),  re_ask = rnorm(10))

Я хочу изменить столбец следующим образом: re_ply на Re-ply total_ID на total_id re_ask на Re-ask

temp <- temp %>% dplyr::rename(Re-ply = re_ply,
                           total_id = total_ID,
                           Re-ask = re_ask)

Это не будет работать св Re-ply и Re-ask символ - не будет работать.Как я могу это исправить.Я знаю, что не идеально иметь символ - в имени столбца, но просто хотел проверить, возможно ли это вообще.Моя единственная цель - переименовать этот файл, как показано выше, записать его как .csv и выполнить другую обработку в excel.

Ответы [ 2 ]

4 голосов
/ 01 апреля 2019

Это можно сделать с помощью rename.Вы просто должны поместить имена столбцов со специальными символами внутри знака "` ":

temp <- temp %>% dplyr::rename(`Re-ply` = re_ply,
                                total_id = total_ID,
                                `Re-ask` = re_ask)
names(temp)
[1] "Re-ply"   "total_id" "Re-ask" 
0 голосов
/ 01 апреля 2019

Проще говоря, оберните все имена аргументов "специальными символами" (например, минус) в кавычки или кавычки, например, rename("Re-ply" = re_ply).И вы можете использовать квази-цитату или sjmisc::var_rename(), если хотите старое имя = новое имя вместо новое имя = старое имя .

library(rlang)
library(dplyr)
library(sjmisc)

temp <- data.frame(
  re_ply = rnorm(10), 
  total_ID = rnorm(10),  
  re_ask = rnorm(10)
)


old_name <- "re_ply"
new_name <- "Re-ply"

temp %>% colnames()
#> [1] "re_ply"   "total_ID" "re_ask"

temp %>% 
  dplyr::rename(
    "Re-Ply" = re_ply,
    total_id = total_ID,
    "Re-ask" = re_ask
  ) %>% 
  colnames()
#> [1] "Re-Ply"   "total_id" "Re-ask"

temp %>% 
  dplyr::rename(
    !! new_name := !! old_name,
    total_id = total_ID,
    "Re-ask" = re_ask
  ) %>% 
  colnames()
#> [1] "Re-ply"   "total_id" "Re-ask"

temp %>% 
  sjmisc::var_rename(
    re_ply = "Re-ply",
    total_ID = total_id,
    re_ask = "Re-ask"
  ) %>% 
  colnames()
#> [1] "Re-ply"   "total_id" "Re-ask"

temp %>% 
  sjmisc::var_rename(
    !! old_name := !! new_name,
    total_ID = "total_id",
    re_ask = "Re-ask"
  ) %>% 
  colnames()
#> [1] "Re-ply"   "total_id" "Re-ask"

Созданона 2019-04-01 пакетом Представ (v0.2.1)

...