2016-05-30 13 views
1

は、だから私は、次のコードを持っている以外、何かを選択します。これは何のコードがないこと=「黒」またはtype =「オレンジ」と入力していdataset0のDATASET1すべての行に追加することですはDplyr〜は

library (dplyr) 
dataset1 <- filter(dataset0, dataset0$type == "black" | dataset0$type == "orange") 

オレンジ色と黒色以外のすべてのものを取りたい場合はどうすればいいですか?次は正しいですか?

library (dplyr) 
dataset1 <- filter(dataset0, dataset0$type != "black" | dataset0$type != "orange") 

ありがとうございます。

答えて

1

一つの方法がbe可能性:

dataset1 <- filter(dataset0, !(dataset0$type == "black" | dataset0$type == "orange")) 

あなたの提案が正しくありません。複合式を否定するときは、式全体を否定しないと、ORをANDに変更する必要があります。

これは特にdplyrとは関係ありません。基本的なロジックです。また、論理式に "$"演算子を含むデータフレーム名を含めないでください。試してみてください:あなたは「と」に「または」を変更する必要があります

dataset1 <- filter(dataset0, !(type == "black" | type == "orange")) 
+0

上記を試しましたが、正しく動作していないようです。たぶんそれは、 "または"を "と"に変えることが、蛇のコメントで言われているように〜ですが、私は確信していません。 :/ 私が受け取った結果は奇妙です。削除されたセルがいくつかありますが、わかりません。 – D1W1TR15

+0

提供されたロジックIは、小さな例で正しい復習を提供します。なぜあなたは珍しい結果を得ているのか分かりません。見ているものを示す例を投稿する必要があります。再現可能な例を提供する可能性が最も高いので、dput()を使って例を構築することをお勧めします。 –

+0

それは働いた!私は理由を理解していないが、私が試した: DATASET1 < - DATASET1 <(!dataset0、(タイプ== "黒"))フィルタ - フィルタ(!DATASET1、(タイプ== "オレンジ")) 私はなぜそれが私に1つの行のコードで欲しい結果を提供しないのか分からない:/ – D1W1TR15

0

、そう

まずように、

今、あなたの中に &を使用してサブセット
type <- c(rep("black", 5), rep("orange", 5), rep("green", 5)) 
dataset0 <- as.data.frame(type) 

いくつかの偽のデータを作ります論理の文

あなたはに|を変更しない場合では、元のデータフレーム(オレンジと黒の両方が含まれています)が返されます。

dataset1 <- filter(dataset0, dataset0$type != "black" | dataset0$type != "orange") 
dataset1 
    type 
1 black 
2 black 
3 black 
4 black 
5 black 
6 orange 
7 orange 
8 orange 
9 orange 
10 orange 
11 green 
12 green 
13 green 
14 green 
15 green 
+0

こんにちは、あなたのご意見ありがとうございます。 あなたが言及しているタイプの使用法をよく理解していません。私は、彼らが削除したばかりの「黒人」と「オレンジ」の正確な量を知らない(それらの隣の数字とあなたが提供したデータフレームで判断すると、 ?) 最後の2行で何をしているのか分かりますが、最初の行の目的を理解していないので、できるだけ説明をお願いします。前もって感謝します。 – D1W1TR15

+0

混乱して申し訳ありませんが、最初の2行はちょうどいくつかの偽のデータを設定しています。または&をフィルタリングステートメントに追加します。いくつのレコードがあるにもかかわらず、filterステートメントは機能しますが、データを提供していないので、2つの異なるフィルターステートメントを試してみました。 –