我正在尝试将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"
答案 0 :(得分:1)
这里有两件事:
1 - &&
仅比较向量的第一个元素。因此,例如,model_data$FICO >= 501 && model_data$FICO <= 650
只是比较比较两边返回的每个逻辑向量的第一个元素,对于您的数据,TRUE
和TRUE
(650是&gt; = 501和650&lt; = 650)。使用&
将解决此问题,以便为每个逐元素比较返回逻辑向量。有关详细信息,请参阅this帖子。
2 - 已在评论中解决。您希望使用矢量化ifelse
函数来执行逻辑比较并返回值向量。在上面的评论中,只需在之前的"EXCELLENT"
语句中移动ifelse
:... , "MODERATE", "EXCELLENT"))