我在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
我不确定该怎么做。任何帮助将不胜感激。
答案 0 :(得分:1)
您可以通过多种方式执行此操作。
以R为基数的一种方法是使用seq
以您需要的格式创建每月日期。因此,例如,您可以通过
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")
答案 1 :(得分:0)
我们可以使用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