2017-07-31 15 views
1

私はEnsemblの遺伝子注釈の番号を含むデータフレームを持って、DFは次のようになります。「。」を削除するにはデータフレーム内の列の内容から?

 geneID 
1 ENSG00000000005.5 
2 ENSG00000001561.6 
3 ENSG00000002726.18 
4 ENSG00000005302.16 
5 ENSG00000005379.14 
6 ENSG00000006116.3 

ので、私はそれを削除したいと思います「」すべてのIDの末尾にある数字です。合計で私は11224行を持っています。 gsubコマンドgsub(".","",colnames(dataframe))を使ってみましたが、これは役に立たないです。

提案がありますか? ありがとうございます。

+0

数字以外の数字をそのまま残したい場合はありますか?すなわち 'ENSG0000000005.TR'と同じままにするか、' ENSG000000005.5E'と 'ENSG000000005.E'のままにしておきますか?そうでない場合は、ドットの後ろのすべてを削除したい場合は、[この質問](https://stackoverflow.com/questions/10617702/remove-part-of-string-after)の複製です – Sotos

答えて

1

我々は最後に.が必要な場合は.は(.は、任意の文字を意味するメタ文字であるとして、それをエスケープ(\\))文字列の最後まで、一つ以上の数字(\\d+)が続くまで、文字をキャプチャそして意図はその後数と.を除去する場合、一つ以上の数字が続く点に一致し、

"")ブランクと交換捕捉基

df1$geneID <- sub("^(.*\\.)\\d+$", "\\1", df1$geneID) 

の後方参照(\\1)で置き換えます

df1$geneID <- sub("\\.\\d+", "", df1$geneID) 
df1$geneID 
#[1] "ENSG00000000005" "ENSG00000001561" "ENSG00000002726" "ENSG00000005302" 
#[5] "ENSG00000005379" "ENSG00000006116" 
+1

それは動作します! :-Dありがとう! – Biocrazy

0

次のコードを使用して、 '。'の後に英数字を削除できます。

gsub("\\..*", "", df$geneID) 
関連する問題