2017-02-09 46 views
0

私は何百ものサンプルを持つ遺伝子発現データセットに取り組んでいます。データフレーム内の各サンプルには一意の列ID(例:IHC_123のOHC_112)があります。私は、 "OHC"を含む列だけを含む新しいデータフレームを作りたいと思います。これどうやってするの?列id文字のサブセットでdfから列を抽出する

私は実用的なサンプルデータフレームを作成するのに苦労しています...しかし、これは私ができた最高のものです。

は、これは私のことができます: -

データフレーム "DF"

 OHC_1 OHC_2 OHC_3 IHC_4 IHC_5 OHC_6 
Gene1 1 1 0 1 1 0 
Gene2 0 0 0 1 1 0 
Gene3 1 1 1 0 0 1 
Gene4 1 1 1 0 0 0 
私は、次のサブセットコマンド

newDF <使用して親しま

サブセット(OHC_3 DFを、= OHC_1を選択)データフレームを列の範囲でサブセット化することはできますが、ヘッダーに「OHC」を含むすべての列を選択することはできません。

ありがとうございました!

答えて

1

一致する名前の列をサブセット化すると、greplが使用されますか? grepのは、あなたが列を削除するために、負のベクトルのインデックスを使用することができます数値を返すので

df.2 <- df[, -grep("^OHC_[1:3]$", names(df))] 

> DF[, grepl("OHC",names(DF))] 
    OHC_1 OHC_2 OHC_3 OHC_6 
1  1  1  0  0 
2  0  0  0  0 
3  1  1  1  1 
4  1  1  1  0 
0

はまた、負のgrepで、より一般化である短い電話をかけることができます。さらに多くのパターンや複雑なパターンを追加することができます。

+0

からmatchesselectを使用することができます意味 ' "^ IHC_ [1-3] $"'あなたの正規表現のために? – lmo

0

私たちは、たぶんtidyverse

library(tidyverse) 
DF %>% 
    select(matches("^OHC")) 
#  OHC_1 OHC_2 OHC_3 OHC_6 
#Gene1  1  1  0  0 
#Gene2  0  0  0  0 
#Gene3  1  1  1  1 
#Gene4  1  1  1  0 
関連する問題