【发布时间】:2016-07-15 16:23:52
【问题描述】:
我有一个如下所示的数据框,
head(elnino)
YEAR..MONTH NINO.3 NINO.3.4 rainfall
1 1950 Jan -1.28 -1.34 5.8
2 1950 Feb -1.10 -1.25 17.8
3 1950 Mar -0.92 -1.16 22.4
4 1950 Apr -0.75 -1.01 8.0
5 1950 May -0.47 -0.75 44.0
6 1950 Jun -0.49 -0.74 146.8
现在第一列,即 YEAR..MONTH 属于 FACTOR 类。 我想将其转换为 yearmon 类。但我得到如下所示的 NA,
as.yearmon(elnino[,1], "%Y-%m")
NA
此外,ggplot 在绘图时不支持 yearmon 类。
因此,有人可以告诉我如何处理这种类型的日期吗?
数据如下,
dput(head(elnino))
structure(list(YEAR..MONTH = c("1950 Jan", "1950 Feb", "1950 Mar",
"1950 Apr", "1950 May", "1950 Jun"), NINO.3.ANOM = c(-1.28,
-1.1, -0.92, -0.75, -0.47, -0.49), NINO.3.4.ANOM = c(-1.34, -1.25,
-1.16, -1.01, -0.75, -0.74), rainfall = c(5.8, 17.8, 22.4, 8,
44, 146.8)), .Names = c("YEAR..MONTH", "NINO.3.ANOM", "NINO.3.4.ANOM",
"rainfall"), row.names = c(NA, 6L), class = "data.frame")
此外,我在使用 ggplot 绘制 yearmon 类对象时遇到的错误如下,
qplot(YEAR..MONTH,rainfall,data = elnino,geom="line")
Don't know how to automatically pick scale for object of type yearmon. Defaulting to continuous
Error: Discrete value supplied to continuous scale
【问题讨论】:
-
请将
dput(head(elnino))的输出而不是您提供的数据样本粘贴到您的问题中,以便我们获得与您的实际数据结构完全相同的数据样本。另外,请显示与您的问题相关的所有代码(包括 ggplot 代码)以及您收到的任何错误消息。 -
直接的答案是您传递给
as.yearmon的格式似乎与data.frame 中的格式不匹配。但是,如果没有实际数据,很难做更多的事情。在不知道您要绘制什么的情况下,我无法提出有用的解决方法/方法。 -
try
as.yearmon(elnino[,1], "%Y %b")%b 指的是缩写月份,您的列看起来是年、三个空格、缩写月份的格式。引号中的那位是指您正在转换的数据当前采用的格式,而不是您希望它在转换后的方式。 -
@Austin 非常感谢。但是 qplot() 在绘图时仍然不支持 yearmon 类。我该如何解决这个问题?