1. ホーム
  2. r

[解決済み] Rのdplyrで "Adding missing grouping variables "というメッセージが表示される。

2022-02-26 15:54:10

質問

私のスクリプトの一部で、以前はうまく動作していたのに、最近奇妙なステートメントを生成し、その後に他の多くの関数が正しく動作しなくなったものがあります。私は、各サイトの値のランク付けされたリストの8番目と23番目の位置を選択して、30年間の各サイトの1年間の各日の25番目と75番目のパーセンタイル値を見つけようとしています。私のアプローチは以下の通りです(4行のデータセットに適応 - slice(3)は通常私の完全な30年のデータセットではslice(23)になります)。

library(“dplyr”)

mydata

structure(list(station_number = structure(c(1L, 1L, 1L, 1L), .Label = "01AD002", class = "factor"), 
year = 1981:1984, month = c(1L, 1L, 1L, 1L), day = c(1L, 
1L, 1L, 1L), value = c(113, 8.329999924, 15.60000038, 149
)), .Names = c("station_number", "year", "month", "day", "value"), class = "data.frame", row.names = c(NA, -4L))    

  value <- mydata$value
  qu25 <- mydata %>% 
          group_by(month, day, station_number) %>% 
          arrange(desc(value)) %>% 
          slice(3) %>% 
          select(value)

以前は、25パーセンタイルを記述するために、サイトごとに1つの値を持つテーブルが残っていました(arrange関数が高いものから低いものへと並べるようなので)。しかし、現在では、これらの行を実行すると、メッセージが表示されます。

Adding missing grouping variables: `month`, `day`, `station_number`

グループ化変数は明らかに私のテーブルに存在しているので、このメッセージは私には意味をなさないのです。また、繰り返しになりますが、これは最近まで問題なく動作していました。私は試しました。

  • detatch("plyr") - dplyrの前にロードしているので。
  • dplyr:: group_by - これを直接group_byの行に配置する。
  • dplyrのアンインストールと再インストール(これは私が抱えていた別の問題のためでしたが

このメッセージが表示される理由と、動作しなくなった理由に心当たりはありますか?

よろしくお願いします。

更新:1つのサイトのdputの例を追加しましたが、複数の年の1月1日の値です。例えば、slice(3) はこの小さなサブセットに対して 15.6 という値を返すと期待されます。

どのように解決するのですか?

一貫性を保つために、グループ化変数は先に定義されていれば常に存在するはずです。 select(value) が実行されます。 ungroup が解決するはずです。

qu25 <- mydata %>% 
  group_by(month, day, station_number) %>%
  arrange(desc(value)) %>% 
  slice(2) %>% 
  ungroup() %>%
  select(value)

要求された結果は、警告なしです。

> mydata %>% 
+   group_by(month, day, station_number) %>%
+   arrange(desc(value)) %>% 
+   slice(2) %>% 
+   ungroup() %>%
+   select(value)
# A tibble: 1 x 1
  value
  <dbl>
1   113