2016-05-03 5 views
2

奇妙GROUP_BY +変異させる+ which.max行動

library(dplyr) 

df <- structure(list(date = c("2016-05-02", "2016-05-02", "2016-05-02", 
     "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", 
     "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", 
     "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", 
     "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", 
     "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", 
     "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", 
     "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", 
     "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", 
     "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", "2016-05-02", 
     "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", 
     "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", 
     "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", 
     "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", 
     "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", 
     "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", 
     "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", 
     "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", 
     "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-03", 
     "2016-05-03", "2016-05-03", "2016-05-03", "2016-05-04", "2016-05-04", 
     "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", 
     "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", 
     "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", 
     "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", 
     "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", 
     "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", 
     "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", 
     "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", 
     "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", "2016-05-04", 
     "2016-05-04", "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", 
     "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", 
     "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", 
     "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", 
     "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", 
     "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", 
     "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", 
     "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", 
     "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", 
     "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-05", "2016-05-06", 
     "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", 
     "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", 
     "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", 
     "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", 
     "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", 
     "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", 
     "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", 
     "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", 
     "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", "2016-05-06", 
     "2016-05-06", "2016-05-06"), abc = c(NA, NA, NA, NA, NA, NA, 
     NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
     NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
     NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 20, 20, 16, 
     14, 9, 8, 6, 5, 5, 6, 7, 13, 24, 52, 65, 68, 66, 65, 58, 47, 
     21, 6, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
     1, 1, 0, 0, 0, 0, 0, 10, 19, 19, 15, 11, 8, 8, 5, 4, 4, 4, 5, 
     9, 17, 31, 43, 49, 52, 52, 47, 32, 21, 6, 2, 1, 1, 1, 1, 1, 1, 
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 5, 14, 
     14, 14, 15, 18, 18, 14, 14, 14, 15, 19, 29, 46, 58, 62, 69, 71, 
     67, 56, 40, 25, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
     2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 10, 18, 18, 14, 12, 9, 7, 5, 
     4, 5, 5, 7, 9, 17, 30, 36, 49, 52, 54, 54, 42, 32, 15, 5, 1)), 
    class = "data.frame", row.names = c(NA, -240L), .Names = c("date", "abc")) 


df %>% 
    group_by(date) %>% 
    mutate(peak_max_index = as.numeric(which.max(as.numeric(abc)))) 

私はこれが返すことを期待する何がdate2016-05-04あるすべての行で41だというpeak_max_indexです。しかし、不思議なことにpeak_max_indexNAです。さらに奇妙なことに、date2016-05-03であるすべての行をdplyrコマンドを実行する前に追い出すと、結果は完全に正しいです。これはバグですか?

+0

あなたは 'DF%>%GROUP_BY(日付)%>%に変異(peak_max_index = as.numeric(which.max(as.numeric(ABC))))%>%フィルタ(日==てみました'2016-05-04') '?これは最初の部分が正しいことをしていることを示しています。 'packageVersion( 'dplyr')' showとは何ですか? – Gopala

+0

それは私に同じ結果をもたらします。パッケージのバージョンは '0.4.3'です – RoyalTS

+0

だから、結果のどの部分が変ですか?あなたのコマンドの結果を 'df'に保存し、' df [df $ date == '2016-05-04'、] 'をサブセット化し、すべての行に対して41を得ました。 – Gopala

答えて

-1

NA'swhich.max()という数式で評価されています。ただNA's!is.na()で削除してください。

df %>% 
    group_by(date) %>% 
    mutate(peak_max_index = max(df$abc[!is.na(df$abc)])) 
+0

私はそうではありません。 「NA」を生成するグループの「abc」には「NA」がなく、「max」ではなく「which.max」を探しています。 – RoyalTS

+0

それから、 'aggregate(.dat、df、FUN = max、na.action = NULL)'を使う必要があります。次に、最大値を日付が等しい 'df'にサブセット化するか、' merge(df、df.agg、by = "date") 'を使用します。 – seasmith

+0

それでも、私は望む結果、すなわち最大値の最初のインデックスを私に与えてくれません。 – RoyalTS