在不考虑 0 值的情况下使用 ddply 的列的平均值
Mean of columns with ddply without considering 0 values
所以我有一个以日期和值作为列的数据框。
我找到了一个代码,可以计算具有相同日期的所有值的平均值。
MeanValues = ddply(df, .(Date), summarize, Values = mean(Values))
现在我的问题是它考虑了 0 值,这些值基本上是 NA,有没有简单的方法来修改此代码以排除 0 或 NA 值?
感谢您花时间帮助我,谢谢。
让我们创建一个示例数据:
df = structure(list(Date = structure(c(17115, 17116, 17115, 17115,
17115, 17115, 17115, 17116, 17115, 17116), class = "Date"), Values = c(12,
NA, 13, 15, 18, 14, 17, 11, 20, 19)), .Names = c("Date", "Values"
), row.names = c(NA, -10L), class = "data.frame")
只需以某种方式过滤掉零,例如:
> MeanValues = ddply(df, .(Date), summarize, Values = mean(Values[Values>0]))
但最好在早期阶段用 NA 替换 0,然后在 mean
调用中使用 na.rm=TRUE
。
> df$Values[df$Values==0]=NA
> MeanValues = ddply(df, .(Date), summarize, Values = mean(Values,na.rm=TRUE))
> MeanValues
Date Values
1 2016-11-10 15.57143
2 2016-11-11 15.00000
>
所以我有一个以日期和值作为列的数据框。 我找到了一个代码,可以计算具有相同日期的所有值的平均值。
MeanValues = ddply(df, .(Date), summarize, Values = mean(Values))
现在我的问题是它考虑了 0 值,这些值基本上是 NA,有没有简单的方法来修改此代码以排除 0 或 NA 值?
感谢您花时间帮助我,谢谢。
让我们创建一个示例数据:
df = structure(list(Date = structure(c(17115, 17116, 17115, 17115,
17115, 17115, 17115, 17116, 17115, 17116), class = "Date"), Values = c(12,
NA, 13, 15, 18, 14, 17, 11, 20, 19)), .Names = c("Date", "Values"
), row.names = c(NA, -10L), class = "data.frame")
只需以某种方式过滤掉零,例如:
> MeanValues = ddply(df, .(Date), summarize, Values = mean(Values[Values>0]))
但最好在早期阶段用 NA 替换 0,然后在 mean
调用中使用 na.rm=TRUE
。
> df$Values[df$Values==0]=NA
> MeanValues = ddply(df, .(Date), summarize, Values = mean(Values,na.rm=TRUE))
> MeanValues
Date Values
1 2016-11-10 15.57143
2 2016-11-11 15.00000
>