にチェインするまず最初に、Rのif/else文について多くの質問があることを知っていますが、それらのどれもが私の特定の状況に役立たず、これとしばらくの間闘っている。私はmetricx(リスクと答え)の値に基づいて、2つの新しい変数を作成する必要が複数のdo文を使ってIf-ElseをR
metricx <- c(5, 4.8, 4.4, 3.6, 3.2, 2.1, 1.9, .5, .3, .1)
df <- as.data.frame(metricx)
:
私はこのようになりますデータフレームを持っています。
私は、この作品を知っている....
df$risk <- ifelse(df$metricx >= 4.5, 'VERY HIGH', 'HIGH')
df$risk <- ifelse(df$metricx < 3.5, 'MEDIUM', df$risk)
df$risk <- ifelse(df$metricx < 2, 'LOW', df$risk)
しかし、明らかではない、それを行うには、エレガントなまたは効率的な方法、私はこれを数回行う必要がありますので、(私のデータセットが非常に大きく、私はより多くを持っていますグループより)。私が理解していることは、ifelseが呼ばれるたびにRがすべてのレコードを処理しなければならないということです。
if (df$metricx >= 4.5){
df$risk = 'VERY HIGH'
df$answer = 'Y'
} else if (df$metricx >= 3.5){
df$risk = 'HIGH'
df$answer = 'Y'
} else if (df$metricx >= 2){
df$risk = 'MEDIUM'
df$answer = 'Y'
} else if (df$metricx >= .40){
df$risk = 'LOW'
df$answer = 'Y'
} else {
df$risk = 'LOW'
df$answer = 'N'
}
私はこれを試してみました
...
ifelse(df$metricx >= 4.5,
(df$risk <- 'VERY HIGH' &
df$answer <- 'Y')
,
ifelse(df$metricx >= 3.5,
(df$risk = 'HIGH' &
df$answer = 'Y')
,
ifelse(df$metricx >= 2,
(df$risk = 'MEDIUM' &
df$answer = 'Y')
,
ifelse(df$metricx >= .40,
(df$risk = 'LOW' &
df$answer = 'Y')
,
(df$risk = 'LOW' &
df$answer = 'N')
)
)
)
)
そして、私はこれを試してみました...そして、彼らは両方とも私が理解することができますどちらも異なるエラーを与えます。私は説明しようとしているいくつかの異なるサイトで騒がしいですが、これをどうやって行うのかまだ分かりません。
私の質問: 1.ソリューションが機能しないのはなぜですか?彼らは私がRのサイトで見た構文に従っているように見えますか? 2.希望の出力を得る正しい方法は何ですか?
risk <- c('VERY HIGH', 'VERY HIGH', 'HIGH', 'HIGH', 'MEDIUM', 'MEDIUM', 'LOW', 'LOW', 'LOW', 'LOW')
answer <- c('Y','Y','Y','Y','Y','Y','Y','Y','Y', 'N')
want <- data.frame(metricx, risk, answer)
ここでは、おそらく 'cut'を使用してください。 – lmo
'ifelse'文のセットは実際には適切な構文や使用法を持っていません。 'if'では使用できないベクトル化された条件を使用しているので、2番目のセットは機能しません。 – Gopala
非常に複雑なものがありますが、実際に統計上の一般的な操作である場合は、この目的のために単純なR関数が存在する可能性が非常に高くなります。あなたはそれを検索すればよい(統計学者が適切な検索語を見つけるために操作に名前を付けるものを考慮する)。 – Roland