相关疑难解决方法(0)

按因子计算一组的平均值

有没有办法可以改进,或更简单地完成?

means.by<-function(data,INDEX){
  b<-by(data,INDEX,function(d)apply(d,2,mean))
  return(structure(
    t(matrix(unlist(b),nrow=length(b[[1]]))),
      dimnames=list(names(b),col.names=names(b[[1]]))
  ))
}
Run Code Online (Sandbox Code Playgroud)

这个想法与SAS MEANS BY语句相同.函数'means.by'获取data.frame和索引变量,并计算对应于INDEX唯一值的每组行的data.frame列的平均值,并返回带有该行的新数据框命名INDEX的唯一值.

我确信在R中必须有更好的方法来做到这一点,但我想不出任何事情.

statistics r

9
推荐指数
2
解决办法
4万
查看次数

汇总每日内容

我一直试图聚合(一些不稳定的)每日数据.我实际上正在使用csv数据,但如果我重新创建它 - 它看起来像这样:

library(zoo)

dates <- c("20100505", "20100505", "20100506", "20100507")
val1 <- c("10", "11", "1", "6")
val2 <- c("5", "31", "2", "7")

x <- data.frame(dates = dates, val1=val1, val2=val2)
z <- read.zoo(x, format = "%Y%m%d")
Run Code Online (Sandbox Code Playgroud)

现在我想每天聚合这个(注意有时候一天有> 1个数据点,有时候也没有.

我已经尝试了很多很多变化,但我似乎无法聚合,所以例如这失败了:

aggregate(z, as.Date(time(z)), sum)
# Error in Summary.factor(2:3, na.rm = FALSE) : sum not meaningful for factors
Run Code Online (Sandbox Code Playgroud)

关于聚合似乎有很多内容,我尝试了很多版本,但似乎无法在日常水平上总结这一点.除了每日总结之外,我还想运行cummax和累积平均值.

任何帮助都会受到高度赞赏.

更新

我实际使用的代码如下:

z <- read.zoo(file = "data.csv", sep = ",", header = TRUE, stringsAsFactors = FALSE, blank.lines.skip = T, na.strings="NA", format = "%Y%m%d");
Run Code Online (Sandbox Code Playgroud)

似乎我(无意)引用上面的数字类似于实践中发生的事情,因为当我这样做时: …

aggregate r

3
推荐指数
1
解决办法
5978
查看次数

标签 统计

r ×2

aggregate ×1

statistics ×1