Замена названий месяцев в именах столбцов фрейма данных полными названиями месяцев: - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть нижеприведенный фрейм данных, где все месячные цифры представлены в столбцах, как показано.

Adv_Code    April_OPN   May_OPN June_OPN    July_OPN    Aug_OPN Sep_OPN Oct_OPN Nov_OPN Dec_OPN Jan_OPN Feb_OPN March_OPN
A201        0           0       0           0           0       0       0       0       0       0       0       0
A198        2           0       0           1           2       0       5       0       0       0       0       0
S1212       0           3       4           0           0       3       0       1       0       0       0       0

Некоторые из этих месяцев представлены в сокращенной форме, а некоторые являются полными названиями месяцев.Мне нужно преобразовать все это в полные названия месяцев

Adv_Code    April_OPN   May_OPN June_OPN    July_OPN    August_OPN  September_OPN   October_OPN November_OPN    December_OPN    January_OPN February_OPN    March_OPN
A201        0           0       0           0           0           0               0           0               0               0           0               0
A198        2           0       0           1           2           0               5           0               0               0           0               0
S1212       0           3       4           0           0           3               0           1               0               0           0               0

Может кто-нибудь помочь мне с этим?

Ниже приведен код для воспроизведения данных:

Adv_Code <- c('A201','A198','S1212')
April_NOP <- c(0,2,0)
May_NOP <- c(0,0,3)
June_NOP <- c(0,0,4)
July_NOP <- c(0,1,0)
Aug_NOP <- c(0,2,0)
Sep_NOP <- c(0,0,3)
Oct_NOP <- c(0,5,0)
Nov_NOP <- c(0,0,1)
Dec_NOP <- c(0,0,0)
Jan_NOP <- c(0,0,0)
Feb_NOP <- c(0,0,0)
Mar_NOP <- c(0,0,0)

df <- data.frame(Adv_Code,Vintage_Dt,April_NOP,May_NOP,June_NOP,July_NOP,Aug_NOP,Sep_NOP,Oct_NOP,Nov_NOP,Dec_NOP,Jan_NOP,Feb_NOP,Mar_NOP)

1 Ответ

2 голосов
/ 30 апреля 2019

Извлечение первых 3 символов из имени столбца, match это с month.abb и замена их на соответствующие month.name

names(df)[-1] <- paste(month.name[match(substr(names(df)[-1], 1, 3), 
                       month.abb)], "OPN", sep = "_")

df
#  Adv_Code April_OPN May_OPN June_OPN July_OPN August_OPN September_OPN October_OPN November_OPN December_OPN
#1     A201         0       0        0        0          0             0           0            0            0
#2     A198         2       0        0        1          2             0           5            0            0
#3    S1212         0       3        4        0          0             3           0            1            0
#  January_OPN February_OPN March_OPN
#1           0            0         0
#2           0            0         0
#3           0            0         0

FYI, month.abb и month.name - встроенные векторы в R

month.abb
# [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"
 month.name
# [1] "January"   "February"  "March"  "April"  "May"  "June"  "July"  
#     "August"  "September" "October"   "November"  "December" 
...