값 목록이 값 범위 내에 있는지 확인한 다음 특정 값을 할당해야하는지 확인해야합니다. 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