Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从R中的aggregate()函数创建表_R - Fatal编程技术网

如何从R中的aggregate()函数创建表

如何从R中的aggregate()函数创建表,r,R,我有一个如下所示的数据集: Type Date Lively Count sm 1/13/2010 10 10 sm 1/14/2010 10 20 sm 2/15/2010 20 30 am 4/16/2010 5 42 am 1/17/2010 10 34 am 3/18/2010 40 54 sm 1/19/2010 10 65 sm 4/20/2010

我有一个如下所示的数据集:

Type    Date    Lively  Count
sm      1/13/2010   10  10
sm      1/14/2010   10  20
sm      2/15/2010   20  30
am      4/16/2010   5   42
am      1/17/2010   10  34
am      3/18/2010   40  54
sm      1/19/2010   10  65
sm      4/20/2010   5   67
sm      3/21/2010   40  76
我试着每月平均出所有的数值参数。因此,我的结果数据集理想情况下为:

Date     Lively Count
Jan 2010     10     32.25
Feb 2010     20     30.00
Mar 2010     40     65.00
Apr 2010      5     54.50
我非常接近这一点,我目前拥有的是:

         Lively Count
Jan 2010     10     32.25
Feb 2010     20     30.00
Mar 2010     40     65.00
Apr 2010      5     54.50
正如你所看到的,我缺少了“日期”这个标题。这是我的密码:

library(zoo)
z <- zoo(data[3:4], as.Date(data[,2], "%m/%d/%Y"))
aggregate(z, as.yearmon, mean)
图书馆(动物园)

z您可以使用
列表
格式在
聚合
中指定您的姓名

x <- aggregate(. ~ as.yearmon(index(z)), z, mean)
names(x)[1] <- "Date"
x
#       Date Lively Count
# 1 Jan 2010     10 32.25
# 2 Feb 2010     20 30.00
# 3 Mar 2010     40 65.00
# 4 Apr 2010      5 54.50
要获取“日期”值,需要参考zoo对象的“索引”

aggregate(list(Lively = z[, "Lively"], Count = z[, "Count"]), 
          list(Date = as.yearmon(index(z))), mean)
#       Date Lively Count
# 1 Jan 2010     10 32.25
# 2 Feb 2010     20 30.00
# 3 Mar 2010     40 65.00
# 4 Apr 2010      5 54.50
或者,如果需要,您可以轻松更改姓名。这将使您能够对
聚合使用更好的公式方法

x <- aggregate(. ~ as.yearmon(index(z)), z, mean)
names(x)[1] <- "Date"
x
#       Date Lively Count
# 1 Jan 2010     10 32.25
# 2 Feb 2010     20 30.00
# 3 Mar 2010     40 65.00
# 4 Apr 2010      5 54.50

您可以使用
列表
格式在
聚合
中指定您的姓名

x <- aggregate(. ~ as.yearmon(index(z)), z, mean)
names(x)[1] <- "Date"
x
#       Date Lively Count
# 1 Jan 2010     10 32.25
# 2 Feb 2010     20 30.00
# 3 Mar 2010     40 65.00
# 4 Apr 2010      5 54.50
要获取“日期”值,需要参考zoo对象的“索引”

aggregate(list(Lively = z[, "Lively"], Count = z[, "Count"]), 
          list(Date = as.yearmon(index(z))), mean)
#       Date Lively Count
# 1 Jan 2010     10 32.25
# 2 Feb 2010     20 30.00
# 3 Mar 2010     40 65.00
# 4 Apr 2010      5 54.50
或者,如果需要,您可以轻松更改姓名。这将使您能够对
聚合使用更好的公式方法

x <- aggregate(. ~ as.yearmon(index(z)), z, mean)
names(x)[1] <- "Date"
x
#       Date Lively Count
# 1 Jan 2010     10 32.25
# 2 Feb 2010     20 30.00
# 3 Mar 2010     40 65.00
# 4 Apr 2010      5 54.50

@SimonO101,我没有将
作为.yearmon
发布,而是因为OP试图从
zoo
对象获取结果。我想这是一个很小的区别。不过,我不知道,我马上就有了它的用处。所以我想说声谢谢!:-)我还发现了一个名为fortify()的好方法,它可以将zoo对象转换为数据帧@user2649452,当然可以。您还可以使用
data.frame(日期=索引(x),核心数据(x))
。我仍然不清楚为什么您不想要一个
data.frame
(除非这是最后一个阶段,您只是出于美观的原因才这样做)
zoo
在很多方面都可能更快,因为在R中对矩阵的操作通常比对
data.frame
s的操作快得多。@SimonO101,我没有将
作为.yearmon
发布,而是因为OP试图从
zoo
对象获取结果。我想这是一个很小的区别。不过,我不知道,我马上就有了它的用处。所以我想说声谢谢!:-)我还发现了一个名为fortify()的好方法,它可以将zoo对象转换为数据帧@user2649452,当然可以。您还可以使用
data.frame(日期=索引(x),核心数据(x))
。我仍然不清楚为什么您不想要一个
data.frame
(除非这是最后一个阶段,您只是出于美观的原因才这样做)
zoo
很可能在很多方面更快,因为在R中对矩阵的操作通常比对
data.frame
s的操作快得多。最左边的“列”不是列,而是
zoo
对象的
索引。与
data.table
的基本R中的
rownames
类似,这不是一个“列”,因此不能给它命名。最左边的“列”不是列,而是
zoo
对象的
索引。与
data.table
的基本R中的
行名
类似,这不是一个“列”,因此不能给它命名。