r - R 中的嵌套 if-else 循环

标签 r if-statement

我有一个名为“crimes”的数据框,其中包含一个“pre_rate”列,表示实现某项法律之前的犯罪率。我想使用嵌套的 if-else 循环将每个费率放在“rate_category”列中。我有以下代码:

crimes$rate_category = 
  with(crimes, ifelse(pre_rate > 0.26 && pre_rate < 0.87, 1,
    ifelse(pre_rate > 1.04 && pre_rate < 1.94, 2, 
      ifelse(pre_rate > 2.03 && pre_rate < 2.96, 3, 
        ifelse(pre_rate > 3.10 && pre_rate < 3.82, 4, 
          ifelse(pre_rate > 4.20 && pre_rate < 11.00, 5, "NA"))))))
crimes

这是一个可重复的示例:
pre_rate = c(0.27, 1.91, 2.81, 3.21, 4.80) 
crimes = data.frame(pre_rate)   
crimes

但是,当我使用原始数据框运行循环时,“rate_category”列中的所有级别都错误地设置为 1。上面的循环似乎有什么问题?

最佳答案

我可能建议使用 case_when 而不是嵌套 ifelse 语句.阅读/遵循更容易一些。但正如@Marius 提到的,您的问题是 &&而不是使用 & .

library(tidyverse)
crimes <- data.frame(pre_rate = c(0.27, 1.91, 2.81, 3.21, 4.80))

crimes %>% 
  mutate(rate_category = case_when(pre_rate > 0.26 & pre_rate < 0.87 ~ 1,
                                   pre_rate > 1.04 & pre_rate < 1.94 ~ 2,
                                   pre_rate > 2.03 & pre_rate < 2.96 ~ 3,
                                   pre_rate > 3.10 & pre_rate < 3.82 ~ 4,
                                   pre_rate > 4.20 & pre_rate < 11.00 ~ 5))

关于r - R 中的嵌套 if-else 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47624818/

相关文章:

C++ switch 语句不起作用

带有变量名的 R missing()

r - 使用 R 中绘制的标准误差创建条形图

r - 函数在不应该返回 NaN 的情况下返回 NaN

C++ 主题 : Using "getline" in conjunction with "If If else"

带 If 条件的 PostgreSQL 查询

R - 将 float 转换为日期

python - 通过他们的 API 访问 Lending Club Loan 列表

php - if语句mysql值和form值错误

java - 为什么这个 if 语句不起作用?