我有以下数据,这些数据来自数据透视表转换(...):
df1
date x y
2012-04-28 ... ...
2012-06-29 ... ...
2012-08-31 ... ...
2012-09-30 ... ...
df2
date x y
2012-04-20 ... ...
2012-06-30 ... ...
2012-08-30 ... ...
2012-09-28 ... ...
正如您所看到的,我无法按月通过索引匹配表格。它将为某些行创建NA。因此,我想,我只能按月份时间格式。
应用了以下功能:
df1$date <- as.Date(df1$date)
df1 <- zoo(df1, df1$date)
index(df1) = as.yearmon(index(df1),"%y-%m")
返回:
df1
date x y
April 2012 ... ...
June 2012 ... ...
August 2012 ... ...
September 2012 ... ...
但是,最终结果应该是
df1
date x y
2012-04 ... ...
2012-06 ... ...
2012-08 ... ...
2012-09 ... ...
你能帮助我吗?
答案 0 :(得分:2)
也许你可以从以下方面获得灵感。
x <- as.Date("2012-04-20")
format(x, format = "%Y-%m")
[1] "2012-04"
答案 1 :(得分:1)
为什么不使用已经在R中的format
函数。
df1$data <- format(as.Date(df1$date), "%Y-%m")
答案 2 :(得分:0)
<强>合并强>
如果您的目标是创建两个动物园对象并按年/月合并它们,那么您不需要将日期列转换为字符列。相反,试试这个:
library(zoo)
z1 <- read.zoo(df1, FUN = as.yearmon)
z2 <- read.zoo(df2, FUN = as.yearmon)
z <- merge(z1, z2)
,并提供:
> z
x.z1 y.z1 x.z2 y.z2
Apr 2012 1 2 1 2
Jun 2012 3 4 3 4
Aug 2012 5 6 5 6
Sep 2012 7 8 7 8
<强>聚合强>
要按月使用mean
进行汇总,请尝试以下操作:
by_month <- aggregate(z, cycle, mean)
在索引显示月份编号时给出以下内容:
> by_month
x.z1 y.z1 x.z2 y.z2
4 1 2 1 2
6 3 4 3 4
8 5 6 5 6
9 7 8 7 8
<强>积强>
我们现在可以使用以下方式绘制:
plot(by_month, type = "h", xlab = "month")
注意:我们假设输入为:
Lines <- "
date x y
2012-04-28 1 2
2012-06-29 3 4
2012-08-31 5 6
2012-09-30 7 8"
df1 <- df2 <- read.table(text = Lines, header = TRUE)