しばらく私を悩ましているRの質問があります。私は数値と(それについては正の)変数AとBを含むデータフレーム(df)を持っています。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
Iはデータのサブセット
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オブジェクトを使用している場合、各列は1つのタイプ、つまり数値または文字(カテゴリ)のいずれかになります。あなたの例の列Bでは '1,5'は文字ですが、それはエラーになります。結果はC列にはありません。これはすべて数字であると思います。数字を比較するときは、 'identical'または 'all.equal'を使うべきです。 AとBが等しい場合、0で割っているため、Infまたは-Infが得られます。 – LyzandeR
'1 ==" 1 "'を試してみると、数値 '1'が最初に文字' '1 ''に変換されて比較されるので、 'TRUE'となり、数字と文字がcolinkされると同様に比較されます文字でなければなりません –
こんにちは@LyzandeR、申し訳ありません、それは1.5であり、1,5ではありません。あなたは正しいと思いますが、dfには同じフォーマットのすべての列があり、実際はそうです。 AとBはともに数値です。私が与えた例では、実際のシナリオが示す多様性を説明しようとしています.Aを0で割ると、Infまたは-Infを取得する必要があります。これはいくつかの値に当てはまります。時にはそれは私に大きな価値を与えます(InfのInfとは異なります)。実際の顧客データでは、私のデータセットには数ギガバイトと100万行があるため、ここでは完全に表現できません。私はこれに肯定的ですが –