2016-06-10 73 views
-2

我有一個小問題,我需要使用「小於」(<)操作符的列,但我的data.frame具有該列(結果)作爲因子列,所以我嘗試了一些東西將其轉換成數值,這裏的R避免與因素強制

Data  result   otherData   MoreData 
    x   403.3    low    old 
    y   405.5    mid    older 
    z   32    very low   young 
    w   326.72   low    median 
    t   45    low    alter 
    g   56.37    low    ego 

所以,用點後有多個號碼的行,在這個例子中是行4和6與我data.frame的例子值326.72和56.37變爲NA。這是我的嘗試:

auxUnit<-joined4[(as.numeric(as.character(joined4$result))),] 

它的工作只是像「X」和「XX」的元素,正如我所說,「x.xy」轉換爲NA,和它給了我這樣的警告:

NAs introduced by coercion 

和輸出數據集:

Data  result   otherData   MoreData 
    x   403.3    low    old 
    y   405.5    mid    older 
    z   32    very low   young 
    NA   NA    NA     NA 
    t   45    low    alter 
    NA   NA    NA     NA 

我想這個代碼轉換爲數字,因爲我需要他們的數字,諸如在Java float或double,這樣我就可以用一些比較,以過濾案件,例如做一些事情:

auxUnit<-joined4[joined4$result>13.64,] 

有沒有一種快速的方法來避免這種情況? 在此先感謝!

+1

您可以請包括數據和/或代碼,將爲我們提供一個[可重現的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example )? ('str()'或'dput()'...)的結果也可能只是'auxUnit <-as.numeric(as.character(joined4 $ result))'? –

+1

請提供一些數據。你的'auxUnit <-...'這一行沒有多大意義,它不太可能是你想要做的。你應該提供指示你想要選擇哪一行的整數索引;你正在給出一些可能超出數據集大小的「雙數」數字。 – nicola

+0

我會編輯更多信息,對於我的回答延遲抱歉,我週末不在家。 – Amnor

回答

0

好的,它已經解決了,我沒有意識到在我的data.frame中,一些數據有「,」而不是「。」。作爲小數點分隔符,我改變了與GSUB這樣的:

joined4$result<-gsub(",", ".", joined4$result) 

然後罰款只是用「as.numeric」的一部分工作。

感謝您的意見!