2017-03-09 8 views
0

私は大きなデータセットを持っています。このデータは文字と数字でまとめられています。私は数字からすべての手紙を削除したいと思います。gsubを使用してデータから文字を消去するにはどうすればよいですか?

marker g1 g2 g3 
m1 0.2AA 0.7CC 0.2CC 
m2 0.3TT 0.5GG 0.3TT 

私は、これらのコマンドに

data <- read.table(file.choose(), header=T) 
a <- gsub("AA", "", data) # when i wanted to remove all AA 

を使用しかし、私は開いたときに、私は、すべてのデータが

152 1265 120 1254 

のように小数点と異なる番号を指定せずに任意のヘルプの数です見つけますか? ありがとうございました

+0

コードを選択してCtrl + kでポストします。 – Fernando

+0

'gsub'はベクトル(または行列)上で動作し、data.frame(またはlist)では動作しません。特定のベクトル 'data $ g1 < - gsub(" AA "、" data $ g1) 'に適用するか、または' lapply'を使用して複数に適用します: 'data [] < - lapply(data、gsub、pattern = "AA"、replacement = "") ' – alistaire

+0

ありがとうございました。あなたは私の時間を救った。あなたの答えと時間は非常に高く評価されています –

答えて

1

私はあなたを正しく理解していれば、これはオプションになります。

library(data.table) 
DT <- data.table(C1=replicate(3, paste0(round(runif(1), 2L), paste0(sample(LETTERS,2), collapse = ""))), 
       C2=replicate(3, paste0(round(runif(1), 2L), paste0(sample(LETTERS,2), collapse = ""))), 
       C3=replicate(3, paste0(round(runif(1), 2L), paste0(sample(LETTERS,2), collapse = "")))) 
     C1  C2  C3 
1: 0.35TP 0.86DT 0.6DM 
2: 0.52OG 0.39KJ 0.98CA 
3: 0.27RT 0.62IR 0.28WJ 
DT 
DT[, lapply(.SD, function(x){gsub("[^\\.\\d]", "", x, perl = T) }), .SDcols=1:3] 
    C1 C2 C3 
1: 0.35 0.86 0.6 
2: 0.52 0.39 0.98 
3: 0.27 0.62 0.28 

正規表現は、数字と文字以外のすべてを削除します「」、あなたは小数を必要とするので。

+0

ありがとうMario。これはまた非常に役に立ちます。あなたは高く評価されています –

関連する問題