6

私は最近、3 つの異なるデータ フレームを要約する単純な R スクリプトを作成しました。R と R Studio の最新バージョンに更新して以来、データ フレームの 1 つだけに dplyr のサマライズ機能を使用すると、これまでに見たことのない出力が表示されます (他の 2 つは問題ありません)。また、よくわからない一連の警告も受け取ります。更新する前に、どのデータ フレームにも問題なくスクリプトを記述どおりに実行したことに注意してください。

問題のあるデータ フレームは VO2 と呼ばれ、次のように設定されています。

Name        Sex       VO2
AthleteA    M         50
AthleteA    M         52
AthleteA    M         NA
AthleteB    M         49
AthleteB    M         56
AthleteB    M         47 
AthleteC    M         42
AthleteC    M         NA
AthleteC    M         41 
AthleteD    M         NA
AthleteD    M         NA
AthleteD    M         NA 

私が実行するコードは次のとおりです。

Test.Summary.VO2 = VO2 %>% group_by(Name, Sex) %>% 
summarise(Best.Score = max(VO2, na.rm=TRUE))

このコードは、次の要約を生成します。

Name       Sex     Best.Score
AthleteA    M        52
AthleteB    M        56
AthleteC    M        42
AthleteD    M        -Inf

-Inf 値は、出力ではまったく新しいものです。NA しかなかった場合に、なぜ現在表示されているのかわかりません。

前述のように、2 番目のデータ フレームにまったく同じレイアウトを使用し、同じタイプの集計を実行します。ここでは、すべて正常に動作します。na.rm=TRUE で要約すると、NA ケースを -Inf 値に置き換えることなく、NA ケースが削除されます。

これが少し珍しいのは、次を使用してデータフレームを表示する場合です。

View(Test.Summary.VO2)

次の一連の警告メッセージが表示されます。

There were 38 warnings (use warnings() to see them)
warnings()
Warning messages:
1: Unknown or uninitialised column: 'Quad'.
2: Unknown or uninitialised column: 'Quad'.
3: Unknown or uninitialised column: 'Quad'.
4: Unknown or uninitialised column: 'Quad'.

スクリプトの後半で、「Quad」という新しい変数を生成します。しかし、環境をクリアしてR Studioを再起動した後でも、上記の警告が表示されます。.csv ファイルの名前を変更し、別のデータフレーム名を使用してインポートしようとしました。スクリプトの後半で生成される列「Quad」が環境のどこかにぶら下がっているようです。

ここで何が起こっているのか、私は本当に途方に暮れています。

Stack の R エキスパートの 1 人が、この問題を解決する方法についてアイデアを提供してくれることを願っています。

ご検討いただきありがとうございます。

4

2 に答える 2

0

パーティーに遅れましたが、解決策は、最大化する値がない場合に Inf の代わりに NA を返すことです。これは、hablar パッケージの s 関数で実行できます。

library(dplyr)
library(hablar)

VO2 %>% 
  group_by(Name, Sex) %>% 
  summarise(Best.Score = max(s(VO2)))

これにより、次のことが得られます。

  Name     Sex   Best.Score
  <chr>    <chr>      <int>
1 AthleteA M             52
2 AthleteB M             56
3 AthleteC M             42
4 AthleteD M             NA
于 2018-11-01T08:49:52.453 に答える