【发布时间】:2020-01-05 09:31:23
【问题描述】:
我有以下数据框:
Category <- rep(c("FACE", "LIP", "BODY", "HAIR", "SUN"), each = 2)
Month <- c("October", "Janurary", "April", "Feburary", "November",
"August", "October", "May", "June", "December")
df2 <- data.frame(Category, Month)
Category Month
1 FACE Oktober
2 FACE Janurary
3 LIP April
4 LIP Feburary
5 BODY November
6 BODY August
7 HAIR October
8 HAIR May
9 SUN June
10 SUN December
如果 FACE、LIP、BODY 或 HAIR 类别在十月、十一月或十二月,并且如果类别太阳在四月、五月、六月或七月,我想添加另一列“旺季”= TRUE。
结果应该是这样的:
Category Month high_season_result
1 FACE October TRUE
2 FACE Janurary FALSE
3 LIP April FALSE
4 LIP Feburary FALSE
5 BODY November TRUE
6 BODY August FALSE
7 HAIR October TRUE
8 HAIR May FALSE
9 SUN June TRUE
10 SUN December FALSE
我试过这段代码:
df2$high_season <- (df2$Category == "FACE" & ((df2$Month == "October") |
(df2$Month == "November") | (df2$Month == "December"))) | (df2$Month ==
"BODY" & ((df2$Month == "October") | (df2$Month == "November") |
(df2$Month == "December"))) | (df2$Category == "LIP" &
((df2$Month == "October") |
(df2$Month == "November") |
(df2$Month == "December"))) |
(df2$Category == "HAIR" & ((df2$Month == "October") | (df2$Month ==
November") | (df2$Month == "December"))) | (df2$Month == "SUN" &
((df2$Month == "April") |
(df2$Month == "May") |
(df2$Month == "June") |
(df2$Month == "July")))
布尔值搞砸了:
Category Month high_season
1 FACE October TRUE
2 FACE Janurary FALSE
3 LIP April FALSE
4 LIP Feburary FALSE
5 BODY November FALSE
6 BODY August FALSE
7 HAIR October TRUE
8 HAIR May FALSE
9 SUN June FALSE
10 SUN December FALSE
我试图删除代码中的括号,然后布尔值发生了变化,但仍然不是正确的结果。我怀疑我用括号或逻辑运算符搞砸了。
有人可以帮忙吗?
【问题讨论】:
标签: r if-statement boolean logical-operators