我有一個R問題困擾了我一段時間。我有一個dataframe(df),它包含變量A和B,它們都是數字(正數)。R,用不同格式的df中的變量?
Assumptions:
- A and B can be equal
- A can be 0
- B can be 0
然後我執行以下計算:
df$C <- ((df$A/(df$B - df$A)) -1) * 100
結果(DF $ C)是一個數值矢量,這使得所有感測我想。雖然我注意到在df $ C之內,有些變量是數值的(一個例子是5),其他的(包含「。」的例如1.5)被解釋爲分類。
實際例子(讓假設A具有在其所有長度上具有相同的值這同樣適用於變量B):
df$A <- 3
df$B <- 2
從而:
ID A B C
1 3 2 400
2 2 2 Inf
3 4 2 -300
4 10 1.5 -217.6471
然後我子集中的數據像這樣:
subset(df, df$C == X)
其中X顯然是一個值。雖然,我發現如果X == 400那麼它工作,否則,如果X == -217.6471它不起作用。相反,我需要使用X ==「-217.6471」,(如果我錯了,就糾正我)意味着變量是分類的。或換句話說:
ID A B C
1 3 2 num
2 2 2 Cat
3 4 2 num
4 10 1.5 Cat
這怎麼可能?
不過,我還有一個問題。當A和B相等時,顯然我得到了「Inf」,「-Inf」和其他一些隨機值(我認爲它是垃圾)。
有人可以請解釋我最近怎麼了?
在此先感謝
此問題不明確,因爲它是。如果你有一個data.frame對象,每一列可以是一個類型,即數字或字符(分類)。在你的例子的B列中,'1,5'是字符,但是這會導致錯誤,而不是C列中的結果。這使我認爲它是全部數字。比較數字時,應使用「相同」或「all.equal」。如果A和B相等,你除以0,這就是爲什麼你得到Inf或-Inf。 – LyzandeR
如果您嘗試'1 ==「1」',您將得到'TRUE',因爲數字'1'首先轉換爲字符'「1」',然後進行比較,類似地,當數字和字符串聯時,數字變爲成爲一個角色 –
Hi @LyzandeR,對不起,它是1.5而不是1,5。你說的對,據說df的所有列都有相同的格式,事實上情況就是這樣。 A和B都是數字。 C也是如此。我用我給出的例子來說明真實場景可以呈現的多樣性,是的,一旦我將A除以0,我應該得到Inf或-Inf,這對某些值是正確的。儘管有時它給了我一個巨大的價值(與Inf的Infin不同)。我不能在這裏完全表示它,因爲我的數據集有一些千兆字節和大約10萬行的真實客戶數據。雖然我對這個 –