私はタイタニックデータセットで遊んでいて、最近学んだ基本を適用していて、以下のエラーに直面しました。以下のシナリオを見つけてください。
titanic <- fread("titanic3.csv")
次に、特定の列の空の文字列をチェックしようとしました
titanic[embarked==""]
この列に空の文字列があるとして3行を取得します。
次に、年齢に欠測値(NA)があることがわかったので、平均を取り、欠測した年齢の値を性別に置き換えました。
titanic <- titanic %>% group_by(sex) %>% mutate(age=if_else(is.na(age), mean(age, na.rm = TRUE), age))
この後、View(titanic)で、データフレームの「boat」列にも空の文字列があることに気付きました。
したがって、「embarked」列の最初のクエリと同様に、次のクエリを使用して「boat」列の空の文字列を見つけようとしました。これにより、NAに置き換えることができますが、次のようなエラーメッセージが表示されます。
titanic[boat=='']
Error in `[.data.frame`(titanic, boat == "") : object 'boat' not found
タイタニックデータフレームの「age」列を平均年齢値で更新した後にのみ、このエラーメッセージが表示されることに気付きました。しかし、データフレームを更新する前にこれと同じコードを実行すると、このエラーメッセージは表示されません。
なぜこのエラーや間違いが発生するのか理解できません。
whichステートメントを試してください:
library(tidyverse)
titanic <- fread("titanic3.csv")
titanic <- titanic %>% group_by(sex) %>% mutate(age=if_else(is.na(age), mean(age, na.rm = TRUE), age))
titanic[which(titanic$boat == ''),]
出力:
# A tibble: 823 x 14
# Groups: sex [2]
pclass survived name sex age sibsp parch ticket fare cabin embarked boat body
<int> <int> <chr> <chr> <dbl> <int> <int> <chr> <dbl> <chr> <chr> <chr> <chr>
1 1 0 Allison, Miss. Helen Loraine female 2.00000 1 2 113781 151.5500 C22 C26 S
2 1 0 Allison, Mr. Hudson Joshua Creighton male 30.00000 1 2 113781 151.5500 C22 C26 S 135
3 1 0 Allison, Mrs. Hudson J C (Bessie Waldo Daniels) female 25.00000 1 2 113781 151.5500 C22 C26 S
4 1 0 Andrews, Mr. Thomas Jr male 39.00000 0 0 112050 0.0000 A36 S
5 1 0 Artagaveytia, Mr. Ramon male 71.00000 0 0 PC 17609 49.5042 C 22
6 1 0 Astor, Col. John Jacob male 47.00000 1 0 PC 17757 227.5250 C62 C64 C 124
7 1 0 Baumann, Mr. John D male 30.58523 0 0 PC 17318 25.9250 S
8 1 0 Baxter, Mr. Quigg Edmond male 24.00000 0 1 PC 17558 247.5208 B58 B60 C
9 1 0 Birnbaum, Mr. Jakob male 25.00000 0 0 13905 26.0000 C 148
10 1 0 Blackwell, Mr. Stephen Weart male 45.00000 0 0 113784 35.5000 T S
# ... with 813 more rows, and 1 more variables: home.dest <chr>
ミューテーションによってデータ型がdata.tableからgrouped_dfに変更されるため、同じステートメントは機能しません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加