首页 > 解决方案 > 当布尔运算符总是排除单个值,而根据逻辑应该包含它时,如何解决它?

问题描述

我有一个希望很容易解决的问题,但我一直没能解决。

如果有 12 个数字的范围,从 1 到 12(代表月份),那么我想要做的是将某个连续数字(月份)系列更改为“PeriodA”或“PeriodB”。我打算通过使用布尔运算符来做到这一点。

所以我创建的是:

# For example period A is from May until August and period B is from October untill april

PeriodAstart <- 5    # Or any other numbers
PeriodAend <- 8
PeriodBstart <- 10
PeriodBend <- 4

#data$season contains the numbers 1-12

 data$season[(data$season >= PeriodAstart) 
              & (data$season <= PeriodAend )] <- "PeriodA"

 data$season[(data$season >= PeriodBstart) 
              & (data$season <= PeriodBend )] <- "PeriodB"

除了值 1 之外,该脚本似乎可以工作。例如,当从 10(10 月)到 4(4 月)的 periodB 游侠时,总是会发生这种情况。我不明白为什么,或者如何解决它。

输出示例:

table(data$season)
     1      9 PeriodA PeriodB
   461   2430  11573   5825 

我知道它很容易手动解决,但我将使用它为多个数据文件创建一个自动化过程,因此我需要一个在布尔运算符中的解决方案。

感谢您的阅读和帮助:)

标签: booleanoperators

解决方案


推荐阅读