【问题标题】:How to make a difference between month 1 and 10 in my data set?如何在我的数据集中区分第 1 个月和第 10 个月?
【发布时间】:2013-10-29 01:19:17
【问题描述】:

这是我的代码的一部分。

library(reshape2)
setwd("C:/Users/Desktop/WildFires/FedFire8004/FedFire8004")
load("fedfire8004.rda")
library(reshape2)
Acres <- melt(fedfire8004$acres)

它读取具有纬度、经度、时间(每月)和值的数据,并将数据转换为以下格式(英亩)。问题是在输出中,第 1 个月和第 10 个月之间没有区别。它们都存储在例如 1983.10 的第 1 个月和 1980 年的第 10 个月。我是否可以将它们存储为不同的格式,例如第 1 个月的 1980.1 和 1980.10和 10.

     lat  lon  month      Acre
1  -118.5 48.5 1983.10    1692.9
2  -117.5 48.5 1983.10      11.1
3  -116.5 48.5 1983.10       0.0
4  -115.5 48.5 1983.10       1.1
5  -114.5 48.5 1983.10       0.0
6  -113.5 48.5 1983.10     151.2
7  -112.5 48.5 1983.10       5.0

【问题讨论】:

  • 如果class(fedfire8004$month)numeric,那就太晚了。您将不得不返回到允许区分 1 月和 10 月的文件或以前的 R 数据。您需要将年份和月份拆分为两个不同的列,或者将 yyyy.mm 存储为 character。您还可以将. 替换为 \ 以避免数字解释。
  • @flodel;没有类是“整数”。
  • 你能显示str(fedfire8004$acres)吗?
  • @flodel;num [1:24, 1:18, 1:300] NA NA NA NA NA NA NA NA NA NA ... - attr(*, "dimnames")=列表3 ..$ lon : chr [1:24] "-124.5" "-123.5" "-122.5" "-121.5" ... ..$ lat : chr [1:18] "31.5" "32.5" "33.5 " "34.5" ... ..$ 月:chr [1:300] "1980.1" "1980.2" "1980.3" "1980.4" ...

标签: r reshape rda


【解决方案1】:

我认为问题出在melttype.convert 应用于数据的暗淡名称。为避免字符到数字的转换,您可以将. 替换为-。试试:

dimnames(fedfire8004$acres)$month <- sub("\\.", "-",
                                         dimnames(fedfire8004$acres)$month)

然后再次应用melt,您应该会看到1980-11980-10

【讨论】:

  • 评价不错。如果melt 自动强制维度属性类型,我认为melt 在 DWIM-ing 方面的努力过于“激进”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
  • 2023-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多