2015-10-22 49 views
0

我的數據是這樣的:如何刪除R中的行不具有許多

SNP    A1  A2  EFF      FRQ 
rs12565286  C  G  -0.00225985777786465 .04354 
rs11804171  A  T  -0.00530020318295282 .04485 
rs3094315  A  G  -0.0042551489236695  .8364 
rs12562034  A  G  -0.00911972489527125 .09763 
rs12124819  A  G  0.0250148724382224  . 
rs2980319  A  T  0.0178927256033542  .1306 
rs4040617  A  G  -0.0173263263037023  rabbit 

我想刪除包含的行「」幷包含「兔子」。有沒有辦法保持數字?我想這樣做的原因是因爲我正在使用大型數據文件進行操作,並且出現1 - gwas.data$FRQ[i] : non-numeric argument to binary operator錯誤。我是否認爲錯誤是因爲某些數據不是數字?我甚至沒有檢查過列中的數據是否有非數字值,因爲它的長度爲300萬行。

+1

這可能幫助:http://stackoverflow.com/questions/25276155/remove-the-rows-that-have-non-numeric-characters-in-one-column-in-r –

+0

所以你會期望第5和第7行被刪除? –

+0

如果這行是'character'類型的(嘗試使用'class(your_data_table ['FRQ'])''來檢查它,那麼你可以使用'lapply'和'grep'結合使用。 – VermillionAzure

回答

2

例data.frame:

df <- data.frame(a=1:10, b=1:10, FRQ=c(rnorm(8), '.', 'rabbit'), stringsAsFactors=FALSE) 

要檢查班級的所有列的嘗試:lapply(df, class)

如果FRQ列是字符,你可以通過刪除所有非NUMERICS將其轉換爲數字,然後轉換爲數字。就像這樣:

library(stringr) 
df <- df[!str_detect(df$FRQ, '([A-Za-z])'), ] 
df <- df[!str_detect(df$FRQ, '\\.$'), ] 
df$FRQ <- as.numeric(df$FRQ)