2017-01-13 11 views
0

私はグループ化したいいくつかの結果を持っています。私はハード私は私が探している結果を得るグループをコーディングする場合列区切り文字をRのベクトルに変換する方法はありますか?

例のグループ化は

> results$netting$codes[[1]] 
[1] "7,4,5,9,39" 

です。

dplyr::filter(xCategories,xCategories$code %in% c(7,4,5,9,39)) 
    code frequency percentage 
1  4  124 20.462046 
2  4  124 20.462046 
3  4  124 20.462046 
4  4  124 20.462046 
5  5  112 18.481848 
6  5  112 18.481848 
7  5  112 18.481848 
8  5  112 18.481848 
9  7  65 10.726073 
10 7  65 10.726073 
11 7  65 10.726073 
12 7  65 10.726073 
13 9  64 10.561056 
14 9  64 10.561056 
15 9  64 10.561056 
16 9  64 10.561056 
17 39   8 1.320132 

私がグループを参照すると結果は得られません。あなたがRのベクトルに列区切り文字に変換する方法を

> dplyr::filter(xCategories,xCategories$code %in% c(results$netting$codes[[1]])) 
[1] code  frequency percentage 
<0 rows> (or 0-length row.names) 

または

> dplyr::filter(xCategories,xCategories$code %in% c(as.vector(results$netting$codes[[1]]))) 
[1] code  frequency percentage 
<0 rows> (or 0-length row.names) 

+1

それは全体の変数の代わりに、インラインインスタンスを参照するようあなたは通常、dplyr機能では、 '$'たくありません。 – alistaire

+0

私はあなたが何を意味するか分かりません。 –

+1

dplyrは、(some_df $ 'という接頭辞を付けずに)裸の列名を受け入れる非標準の評価を使用します。接頭辞を使用すると、関数に渡されたデータを参照するのではなく、外部からベクトルを取得します。プレフィックスは簡単な呼び出しではうまく動作し、時には非常に複雑なものを作成するのに役立つこともありますが、大半の時間は頭痛の原因になります。 – alistaire

答えて

1

右側には、scan()を使用します。区切られた文字列を読み取り、その結果を自動的に数値に変換することができます。

scan(text = results$netting$codes[[1]], sep = ",") 

例:

scan(text = "7,4,5,9,39", sep = ",") 
# Read 5 items 
# [1] 7 4 5 9 39 

1:10 %in% scan(text = "7,4,5,9,39", sep = ",") 
# Read 5 items 
# [1] FALSE FALSE FALSE TRUE TRUE FALSE TRUE FALSE TRUE FALSE 
+0

dplyr :: filter(xCategories、xCategories $ code%in%c(scan(text = results $ netting $ codes [[1]、sep = "、")))は、私が探している結果を返します。ありがとう。 –

+1

@KeithJohnHutchison - alistaireが述べたように、あなたは '$'は必要ありません。 'c()'は必要ありません。あなたのコードは 'dplyr :: filter(xCategories、%scanのコード%(text =結果$ netting $ codes [[1]、sep ="、 "))' –

関連する問題