値のリストが値の範囲内にあるかどうかを確認してから、特定の値を割り当てる必要があります。私はifelse()
ステートメントを入れ子にすることなく、これを行う方法を見つけたい(ちょうどifelse
は51回以上ネストすることができず、ひどいと思われる)。数値を複数の比較演算子と値と比較する
これは実例であるため、これを行うための一般的な方法があるかどうかは疑問です(ループ?*適用など)。私はpaste(eval())
と何かを考えていますが、それを働かせることはできません。前もって感謝します。
set.seed(2222)
comparison_table = data.frame(
lower_comp = c('>=', '>=', '>='),
upper_comp = c('<', '<', '<'),
lower_value = c(3, 33, 100),
upper_value = c(31, 40, 120),
new_value = c(1, 2, 3)
)
df = data.frame(
value = runif(n = 25, min = 1, max = 130)
)
df$new_value = with(df,
ifelse(value >= 3 & value < 33, 1,
ifelse(value >= 33 & value < 100, 2,
ifelse(value >= 100 & value < 120, 3, NA))))
value new_value
48.427905 NA
24.461992 1
107.576807 3
76.461703 NA
124.694209 NA
14.132063 1
98.638509 NA
32.436195 NA
88.470441 NA
9.095131 1
49.548878 NA
85.647608 NA
75.357280 NA
120.696858 NA
113.347924 3
51.364939 NA
126.896975 NA
128.282762 NA
115.333414 3
75.022578 NA
128.170932 NA
2.200451 NA
24.085131 1
99.672971 NA
24.945700 1
lower_comp列とupper_comp列が常に同じ値をとる場合は、 'library(data.table);があります。 setDT(df); df [comparison_table、on =(値> = lower_value、値
Frank