2017-05-29 19 views
0

通報

この問題は、複数の論理条件、特に厳密な不等式からRのデータフレームをサブセット(herehereを参照)を使用してサブセット化のトピックに関する拡張であると表現します。サブセットのデータフレームは

は0から100までの私の変数の範囲は、私が50と100の間にある値を返すサブセットを作成する必要があると言うが、また25未満

# Data 
df$var = seq(1:100) 

# Desired Subset 
df$var[df$var > 50 & df$var < 100 & df$var < 25] 

質問

  • 値ベースRを使用して複数の不等式を含むサブセットを作成する最良の方法は何ですか?
  • 非ベースRパッケージを使用するソリューションはより洗練されていますか?
+0

「dplyr」と「data.table」の2つの優れたソリューションです。誰かがこれを '[]'を使ってどのように動作させるか対処することができますか?または、なぜそれが不可能であるか説明してください。 – Danielle

答えて

1

を使用することができます参考になります以下、(彼らが何を望んOP望んでいるように見える):

あなたは50と100と の間で変数を持つようにしたい場合は
df$var[(df$var > 50 & df$var < 100) | df$var < 25] 

25未満では、あなたはを使用する必要があります0演算子(ORと等価)を使用して、必要なサブセットを取得します。出力を下に見てください。

> 
#[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 51 52 53 54 
#[29] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 
#[57] 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 
1

フィルタにはdplyrフィルタを使用できます。 "|"を使用する"または"の場合。 OPはベース-Rのサブセット方式のためと回答を見て、尋ねたよう

library(dplyr) 
df %>% 
    filter(var < 25 | (var > 50 & var < 100)) 
+0

このロジックを使用する方法はありますか?結果はデー​​タセットの1つのベクトルに過ぎませんか? |(DF $ var>が50&DF $ 'のdfの$ VAR(DFます$ VAR [(DFます$ VAR <25:' DFする$ VAR%>% 'work.Iを使用しようとし、同様の問題を持っていないで始まりますvar <100))、]) '。あなたは出力がちょうどその '%>%私の答えのコードの末尾に'(VAR)を選択を追加し、 'var'列でなければならないことを意味する場合 – Danielle

+1

。 – neilfws

+0

出力がベクトルでなければならない場合は、 'select'の後に'%>%unlist(use.names = FALSE) 'を追加してください。 – neilfws

1

我々はdata.table

library(data.table) 
setDT(df)[var < 25 |(var > 50 & var < 100)] 
関連する問題