저는 초보자 R 사용자이며 현재 깔끔한 방법을 배우고 있습니다. 저는 4 년 동안 월별 소비자 물가에 대한 시계열 데이터 세트를 가져 왔습니다. 월별 CPI 열에서 가져온 표제는 R에 5 자리 숫자 (문자)로 표시됩니다. 다음은 그것이 어떻게 생겼는지에 대한 짧은 모형 재현입니다 ...
df <- tibble(`Product` = c("Eggs", "Chicken"),
`44213` = c(35.77, 36.77),
`44244` = c(39.19, 39.80),
`44272` = c(40.12, 43.42),
`44303` = c(41.09, 41.33)
)
# A tibble: 2 x 5
# Product `44213` `44244` `44272` `44303`
# <chr> <dbl> <dbl> <dbl> <dbl>
#1 Eggs 35.8 39.2 40.1 41.1
#2 Chicken 36.8 39.8 43.4 41.3
열 머리글 (44213 등)을 더 이해하기 쉬운 날짜 (여전히 문자)로 변경하고 싶습니다. dplyr을 사용하여 다음과 같은 방법으로 수행하는 것을 이해합니다.
df <- df %>% rename("Jan17" = `44213`, "Feb17" = `44244`,
"Mar17" = `44272`, "Apr17" = `44303`)
# A tibble: 2 x 5
# Product Jan17 Feb17 Mar17 Apr17
# <chr> <dbl> <dbl> <dbl> <dbl>
#1 Eggs 35.8 39.2 40.1 41.1
#2 Chicken 36.8 39.8 43.4 41.3
문제는 내 실제 데이터 세트에 이름을 바꿀 48 개의 열 (개월)이 포함되어 있으므로 입력하는 데 많은 작업이 필요하다는 것입니다. 다른 replace 및 set_names 함수를 살펴 보았지만 열 이름에 반복적 인 변경 사항을 추가하는 것 같습니다. 내가 찾고있는 것처럼 새로운 고유 이름을 제공하지 않습니까?
(열이 좋은 관행이 아니며 분석을 진행하기 전에 이러한 날짜를 행으로 이동해야한다는 것을 알고 있습니다 ... 아니면 이름을 변경하기위한 이전 단계 여야합니까?)
나는 내 질문을 충분히 표현했다. dplyr을 사용하여 더 빠른 솔루션을 배우거나 찾을 수있는 곳으로 이동하고 싶습니다. 시간 내 주셔서 감사합니다.
명명 된 벡터를 전달하여 !!!
with rename
를 사용할 수 있습니다.
library(dplyr)
library(stringr)
df1 <- df %>%
rename(!!! setNames(names(df)[-1], str_c(month.abb[1:4], 17)))
-산출
df1
# A tibble: 2 x 5
# Product Jan17 Feb17 Mar17 Apr17
# <chr> <dbl> <dbl> <dbl> <dbl>
#1 Eggs 35.8 39.2 40.1 41.1
#2 Chicken 36.8 39.8 43.4 41.3
또는 사용 rename_with
df %>%
rename_with(~str_c(month.abb[1:4], 17), -1)
열 이름을 Date
형식화 해야하는 경우
nm1 <- format(as.Date(as.numeric(names(df)[-1]), origin = '1896-01-01'), '%b%y')
df %>%
rename_with(~ nm1, -1)
# A tibble: 2 x 5
# Product Jan17 Feb17 Mar17 Apr17
# <chr> <dbl> <dbl> <dbl> <dbl>
#1 Eggs 35.8 39.2 40.1 41.1
#2 Chicken 36.8 39.8 43.4 41.3
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다