1
所以我有一個數據框,日期和值作爲列。 我找到了一個代碼,用於計算所有具有相同日期的值的平均值。ddply列的平均值不考慮0值
MeanValues = ddply(df, .(Date), summarize, Values = mean(Values))
現在我的問題是,它認爲0值,它們基本上是NA值,有沒有簡單的方法來修改這個代碼,以排除0或NA值?
我很感謝您花時間幫助我,謝謝。
所以我有一個數據框,日期和值作爲列。 我找到了一個代碼,用於計算所有具有相同日期的值的平均值。ddply列的平均值不考慮0值
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]))
但可能會更好在較早階段,以取代0與NA,然後在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
>
非常感謝您的快速回復和偉大的答案,現在它按預期工作! :) – LeroxXx