2016-03-25 27 views
1

私はRの方が比較的新しいです。ここで答えを見つけるのは大変でしたが、2日後に私は困惑しています。R - 文字列に一致する列名を持つ列だけを保持する

私はこのような列名とデータフレームがあります。これは、のために繰り返される

ターゲットID sample1.beta sample1.avg sample1.error sample1.pval sample2.beta sample2.avg sample2.error sample2.pval

を何千ものサンプル。私は、データごとに複数のデータフレームを作成する必要があります:1つはベータ、1つは平均、1つはエラー、もう1つはpvalです。私はまた、すべてのデータフレームでTargetIDを持つ第1列を保持する必要があります。私が持っている

ターゲットID sample1.beta sample2.beta sample3.beta

ターゲットID sample1.pval sample2.pval sample3.pval

など

:結果のデータフレームは次のように列名を持っているでしょうデータフレームをサブセット化するための回答が見つかりましたが、特定の文字列を含むすべての列を選択するのには当てはまりません(第1列を保持する)。

私はawkでRにインポートする前に、これがtxtファイルでうまくいくかどうかを調べてきました。 `TARGETIDと名前(dfrm_name)に適用サブセット列を含むパターン「[」の第2の位置に

+0

それは、再現性の例なしに明確ではありません。しかし、あなたは 'library(data.table);を試すことができます。メルト=パターン( "ベータ$"、 "平均$"、 "エラー$"、 "ポーランド$")) – akrun

答えて

1

使用grepl又はgrep .:

avg_sub <- dfrm[ , grepl("^TargetID|avg$", names(dfrm) ] 

「^」のパターンが最初に一致"4"パターンは文字列の終わりと一致します。

+0

ありがとう!これがトリックでした! – user3685158

1

あなたは(あなたがmtcarsを使用してサンプルデータを提供しないよう)試すことができます。

library(dplyr) 
# select the column mpg and all the columns containing an r 
head(mtcars %>% select(mpg, contains("r"))) 
        mpg drat gear carb 
Mazda RX4   21.0 3.90 4 4 
Mazda RX4 Wag  21.0 3.90 4 4 
Datsun 710  22.8 3.85 4 1 
Hornet 4 Drive 21.4 3.08 3 1 
Hornet Sportabout 18.7 3.15 3 2 
Valiant   18.1 2.76 3 1 
関連する問題