Переименование столбцов в R согласно повторяющейся последовательности - PullRequest
0 голосов
/ 02 ноября 2018

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

В настоящее время данные структурированы так:

long lat V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 ... V477

Я бы хотел переименовать столбцы, чтобы они были:

long lat Jan_1979 Feb_1979 Mar_1979 Apr_1979 ... Sept_2018

Я не уверен, как это сделать. Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Мы можем использовать expand.grid, чтобы получить все комбинации месяца и года:

name_combn <- expand.grid(month.abb, 1979:2018)[1:477,]
names(df) <- c('long', 'lat', paste(name_combn$Var1, name_combn$Var2, sep = "_"))

Выход:

> head(name_combn, 20)
   Var1 Var2
1   Jan 1979
2   Feb 1979
3   Mar 1979
4   Apr 1979
5   May 1979
6   Jun 1979
7   Jul 1979
8   Aug 1979
9   Sep 1979
10  Oct 1979
11  Nov 1979
12  Dec 1979
13  Jan 1980
14  Feb 1980
15  Mar 1980
16  Apr 1980
17  May 1980
18  Jun 1980
19  Jul 1980
20  Aug 1980
0 голосов
/ 02 ноября 2018

Есть несколько способов сделать это.

Одним из способов в базе R является использование seq для создания месячных дат в нужном вам формате. Так, например, вы можете создать первые 10 последовательностей, начиная с 1979-01-01 по

format(seq(as.Date('1979-01-01'), length.out = 10, by = "1 month"), "%b_%Y")

#[1] "Jan_1979" "Feb_1979" "Mar_1979" "Apr_1979" "May_1979" "Jun_1979" "Jul_1979"
#[8] "Aug_1979" "Sep_1979" "Oct_1979"

В вашем случае это должно работать

names(df)[3:479] <- format(seq(as.Date('1979-01-01'), 
                           length.out = 477, by = "1 month"), "%b_%Y")
...