🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

解決済

2回答

2653閲覧

filterで除外したにもかかわらず、警告が出ます

Kircheis

総合スコア10

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2021/02/27 08:57

編集2021/02/27 09:32

R,RStudioの初心者です。
CSVを取り込みました。
その中のデータには一部ブランクがあり、その部分を除外するために、filter()を用いて除外しました。

dplyr::filter(df, ID != 54)
この時は特にエラーが出ませんでした。
次に
ggplot(df, aes(x = factor(Gender), y = ANB_6))+

  • geom_boxplot()

警告メッセージ:
Removed 1 rows containing non-finite values (stat_boxplot).

が出ました。
ブランクの部分はfilterで除外されていると思ったのですが、これは何故なのでしょうか?
警告メッセージが出ると不安になります。
行を除外する方法が間違っているのでしょうか?_

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K_3578

2021/02/27 09:16

不安な気持ちは分かりますが、回答者はエスパーでないので質問本文の情報しか分かりません。 ちゃんと文章を校正してください。
Kircheis

2021/02/27 10:25

修正をいたしました。どうぞよろしくお願いいたします。
guest

回答2

0

自己解決

df1 <- dplyr::filter(df, ID != 54)
ggplot(df1, aes(x = factor(Gender), y = ANB_6))+

  • geom_boxplot()

で、今回のことが解決しました。

投稿2021/02/27 18:00

Kircheis

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

dplyr::filter(df, ID != 54)

これはID==54の行を取り除くという処理であって「ブランクを取り除く」処理ではありません。
普通に考えれば、他にも「ブランク」があったのだと推測されます。それは実データを見なければ確認できません。

header指定を間違えてタイトル行もデータとして取り込んでしまっているなどというミスもありがちです。

投稿2021/02/27 11:29

KojiDoi

総合スコア13692

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kircheis

2021/02/27 13:31

ご回答がありがとうございます。 確かに、私の記載が「ブランク」を協調したので、誤解を招いたかもしれません。 今回は、IDという列の中のID番号54の被験者が持っている全てのデータを使わないようにするためのものです。54番のデータにはブランクが見られるので、使用品場合があります。 その時に除外をしたいと思っておりました。 普段はSPSSを使用しているのですが、Rの方がグラフの数が多いのでRを使おうとしています。 SPSSでは COMPUTE filter_$=(Gender ~= 54). VARIABLE LABELS filter_$ 'Gender ~= 54 (FILTER)'. VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'. FORMATS filter_$ (f1.0). FILTER BY filter_$. でケースの選択ができます。 今回は、Rでそれを行いたいと考えております。 警告メッセージが出ると言うことは ケースの除外ができていないと思われます。
KojiDoi

2021/02/27 13:41

それなら、適切な除外条件を追加したfilterを実行していけばいい話だと思いますが、何を質問したいのでしょうか。どうして期待通りにいかないのかはデータの中身を見なければ判断できず、あなた以外の人間には判断しようがありません。
Kircheis

2021/02/27 15:25

ありがとうございます。 下記にデータを記載します。 - [ ] ID Gender ANB_1 ANB_2 ANB_3 ANB_5 ANB_6 <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 45 0 218. 228. 195. 326. 293. 2 47 0 106. 142. 183. 285. 362. 3 48 0 179. 244. 303. 329. 312. 4 49 0 97.8 297. 216. 331. 312. 5 50 0 197. 274. 263. 298. 299. 6 51 0 189. 228. 275. 287. 405. 7 52 0 143. 213. 216. 270. 310. 8 53 0 116. 173. 287. 413. 397. 9 54 0 245. NA 244. 332. NA 10 55 0 196. 229. 265. 636. 604. 11 56 0 136. 208. 264. 242. 221. 12 57 0 217. 290. 306. 274. 284. 13 58 0 224. 380. 382. 475. 364. 14 59 0 268. 262. 303. 261. 448. です。 このデータでIDの54番にNAがあるので、グラフを記載する時には54番を除外します。 この時に、 dplyr::filter(df, ID != 54) を使うと、多分、54番が除外されると思います。 では、次にグラフのコードを記載します。 ggplot(df, aes(x = factor(Gender), y = ANB_6))+ + geom_boxplot() すると、警告エラーが出ます。 ID 54番が削除されているはずなのに、エラーが出ます。 では、ID54番を削除して、グラフを記載する方法はどうしたら良いのでしょうか? 私の想像ではRは一回のコードで完結されると思い始めました。 SPSSのような統計ソフトでしたら、ID54番を除外したら、次のコードを入力したら、ID54番が除外された状態で計算などが進めていくことができると思います。 そして、ID54番が必要になったら、除外を解除をしなければなりません。 Rはそれが必要ないのではないかと思います。(ここまでご理解いただけますか?) よって、今回知りたいことは、ID54番が除外した状態で、グラフを記載する方法を教えてください。
KojiDoi

2021/02/27 15:46

dplyr::filter()した結果はどこに保存しているのですか? コメントを素直に解釈すると、このコードをただ実行しただけでは元dfは元dfのままです。 なお、この警告メッセージの意味は「 non-finite valuesは削除したぜ」なので、元データはそのままだと思いますがグラフはそのID54が除去されたデータによって描かれているはずです。
Kircheis

2021/02/27 16:08

ありがとうございます。 申し訳ありません。”dplyr::filter()した結果はどこに保存しているのですか? ”とご回答頂けたのですが、結果を保存しなければならないのでしょうか? この部分がよく理解できません。 もし、この結果をどこかに保存して、グラフを書いたら、警告は出ないのでしょうか? よろしくお願いいたします。
KojiDoi

2021/02/27 16:13

関数の仕様を多分誤解されています。filter()をいくら実行してもこのdfは変化しません。 df1 <- dply::filter(df, ... こんな風にして、df1でグラフを描いてみてください。
Kircheis

2021/02/27 16:26

ありがとうございます。 なるほど、元データ(df)に手を加えていく毎に、新しいオブジェクト(df1、df2、df3。。。)を作成していき、そちらでグラフ作成や統計をしていくのですね。 大変分かりやすいです。そして、ID54番を使いたいときは元dfを使えば良いと言うことになりますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問