【问题标题】:Using reshape function in R, with constant variables varying在 R 中使用 reshape 函数,常量变量不同
【发布时间】:2017-06-16 15:20:52
【问题描述】:

我想在 R 中使用宽格式的 reshape 函数来分析从 1996 年、2006 年和 2016 年三个站点记录的天气数据。

我已经手动组合了三个长格式的数据集,但是经度和纬度等一些变量不应该在一年之间变化。但是有些不同。

我收到警告:当我应用 reshape 时,一些常量变量 (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

现在使用 reshape 转到宽格式:

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

警告信息: 在 reshapeWide(data, idvar = idvar, timevar = timevar, 变化 = 变化, : 一些常量变量(名称)确实在变化

> 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

我得到了我需要的东西:位置随时间变化。

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

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

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

请注意,这是两个单独的表格,最初是每年一个,并且是手动合并的,所以也许可以在合并之前进行修改?

【问题讨论】:

  • 欢迎来到 StackOverflow!请阅读有关how to ask a good question 以及如何提供reproducible example 的信息。这将使其他人更容易帮助您。
  • @Jaap 感谢您的耐心等待,希望这些修改可以帮助您更好地理解问题。

标签: r reshape reshape2 tidyr


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-05-27
    • 2021-12-07
    • 2012-08-16
    • 2016-08-21
    • 2019-12-09
    • 2019-05-12
    • 2013-02-14
    • 2012-05-10
    • 2013-12-07
    相关资源
    最近更新 更多