質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
R

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

Q&A

解決済

1回答

654閲覧

「抽出条件の値」を複数もったデータフィルタリングがしたい

haihaikazuma

総合スコア181

R

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

0グッド

0クリップ

投稿2021/05/11 07:38

前提・実現したいこと

Rで、データフレームから行の抽出をしたいです。
抽出条件の値を、c("AAA","BBB")など、複数で実現したいです。

発生している問題・エラーメッセージ

フィルター処理の部分で以下のエラーが表示されてしまいます。
エラーの内容は理解しており、そこで困っているわけではありません。

どちらかと言えば、実現するための代替え案みたいなものがあれば共有いただけると嬉しいです。

Warning messages: 1: In `!=.default`(all_data$Data_1, c("AAA", "BBB")) : longer object length is not a multiple of shorter object length 2: In is.na(e1) | is.na(e2) : longer object length is not a multiple of shorter object length

該当のソースコード

R

1data_1 = c("AAA","BBB","CCC") 2data_2 = c("111","222","333") 3data_3 = c("2021-05-11","2021-05-12","2021-05-13") 4 5all_data = data.frame(Data_1 = data_1, 6 Data_2 = data_2, 7 Data_3 = data_3) 8 9# これは成功する 10result <- all_data[all_data$Data_1 != "AAA", , drop=F] 11 12# これは失敗する 13result <- all_data[all_data$Data_1 != c("AAA","BBB"), , drop=F]

試したこと

フィルタリングの方法をネットで調査いたしました。
ベクトルの概念など、R特有の知識がなくついていけませんでした。

質問サイトを参考に見よう見まねで動かしました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

result <- all_data[all_data$Data_1 != c("AAA","BBB"), , drop=F]

このコードの意図が「AAAでもBBBでもない行を抽出したい」であれば、

result <- all_data[!all_data$Data_1 %in% c("AAA","BBB"),,drop=F]

そういう意図でないのなら、何をやりたいのかを日本語で補足してください。

投稿2021/05/11 11:17

KojiDoi

総合スコア13692

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

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

haihaikazuma

2021/05/12 00:01

回答いただきありがとうございました。 コードの意図はご認識の通りです。 不思議な記述方法ですね…一旦コピペで動くことを確認致しました。 これを参考に学習させていただきます。
KojiDoi

2021/05/12 04:34

コマンドラインから、 > all_data$Data_1 > all_data$Data_1 %in% c("AAA","BBB") などと入力して、まずはこれらの出力結果を眺めてみると、Rにおけるベクトルの使い方が見えてくるのではないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問