使用R的每个记录的IF条件

时间:2018-04-05 01:01:42

标签: r if-statement

我正在尝试将FICO分数分为三类,并希望创建一个新列,其中可以显示相应的值。

我的数据:

FICO
650
450
700

预期输出

FICO    Category
650     Moderate
450     Poor
700     Excellent

我为此写了一个if语句

model_data$ficocategory <- if (model_data$FICO>=350 && 
model_data$FICO<=500) {
print("POOR")
  } else if (model_data$FICO>=501 && model_data$FICO<=650) {
print("MODERATE")
  } else
    print("EXCELLENT")

但我得到的输出是

[1] "MODERATE"

1 个答案:

答案 0 :(得分:1)

这里有两件事:

1 - &&仅比较向量的第一个元素。因此,例如,model_data$FICO >= 501 && model_data$FICO <= 650只是比较比较两边返回的每个逻辑向量的第一个元素,对于您的数据,TRUETRUE(650是&gt; = 501和650&lt; = 650)。使用&将解决此问题,以便为每个逐元素比较返回逻辑向量。有关详细信息,请参阅this帖子。

2 - 已在评论中解决。您希望使用矢量化ifelse函数来执行逻辑比较并返回值向量。在上面的评论中,只需在之前的"EXCELLENT"语句中移动ifelse... , "MODERATE", "EXCELLENT"))