在 R 中使用 reshape 函数,常量变量变化

Using reshape function in R, with constant variables varying

我想使用宽格式 R 中的重塑功能来分析三年多的气象站记录的天气数据:1996 年、2006 年和 2016 年。

我手动组合了长格式的三个数据集,但一些变量,如经度和纬度,不应该从一年到另一年变化。但是有些不一样。

我收到警告:当我应用重塑时,一些常量变量(Nom、Lat、Long)确实在变化,这是预期的。

在这种情况下,目标是让这些变量在生成的宽格式中包含 2016 年观察到的值。

注:并非所有三年都有气象站。

这是一个例子:

a <- c(rep(2, 4), rep(4, 3))
b <- c(rep(2, 3), 5, rep(4, 3), 4, 5, 3)
c <- c(1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
name <- c('a', 'b', 'c', 'd', 'e', 'f', 'g', 'a', 'b', 
          'c', 'd', 'r', 't', 'y', 'u', 'q', 'z')
year <- c(rep(2002, 7),rep(2005, 10))
df <- cbind(id = c, pos = c(a,b), year, name)
df <- as.data.frame(df)

df 将如下所示:

> df
   id pos year name
1   1   2 2002    a
2   2   2 2002    b
3   3   2 2002    c
4   4   2 2002    d
5   5   4 2002    e
6   6   4 2002    f
7   7   4 2002    g
8   1   2 2005    a
9   2   2 2005    b
10  3   2 2005    c
11  4   5 2005    d
12  5   4 2005    r
13  6   4 2005    t
14  7   4 2005    y
15  8   4 2005    u
16  9   5 2005    q
17 10   3 2005    z

现在使用重塑进入宽幅面:

dfw <- reshape(df, direction = "wide", timevar = "year", 
               idvar = "id", v.names = "pos")

Warning message: In reshapeWide(data, idvar = idvar, timevar = timevar, varying = varying, : some constant variables (name) are really varying

> dfw
   id name pos.2002 pos.2005
1   1    a        2        2
2   2    b        2        2
3   3    c        2        2
4   4    d        2        5
5   5    e        4        4
6   6    f        4        4
7   7    g        4        4
15  8    u     <NA>        4
16  9    q     <NA>        5
17 10    z     <NA>        3

我得到了我需要的:pos 随时间变化。

我的问题是:在 2002 年,id 为 5、6 和 7 的观测值分别具有名称 e、f 和 g。然而在 2005 年,它们分别有了 r、t 和 y。宽格式 table dfw 显示 2002 年给出的名字

我希望重塑函数中的结果显示 2005 年为此类观察定义的名称。

reshape函数有什么要修改的吗?也许在另一个包裹里?

请注意,这是两个单独的 table,最初是每年一个,并且是手动组合的,因此在组合之前是否可以进行修改?

合并不同年份的两个数据框时,2005 年的 table 应放在开头。这样 R 就采用了为 2005 年定义的第一个配置。