2016-11-10 12 views
1

したがって、日付と値を列として持つデータフレームがあります。 同じ日付のすべての値の平均を計算するコードが見つかりました。 0の値を考慮しないddplyの列の平均

MeanValues = ddply(df, .(Date), summarize, Values = mean(Values)) 

は今、私の問題は、0またはNA値を除外するために、このコードを変更する簡単な方法があり、それは基本的にはNAの値は0の値を、考えていることでしょうか?

お手数をおかけしていただき、ありがとうございます。ありがとうございます。

答えて

1

のサンプルデータを作成してみましょう:

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") 

だけのような、何らかの方法でゼロを除外する:早い段階でNAと0を置き換えるために

> MeanValues = ddply(df, .(Date), summarize, Values = mean(Values[Values>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 
> 
+0

すばらしい返信と偉大な回答をいただきありがとうございました。現在は意図したとおりに動作します。 :) – LeroxXx

関連する問題