【发布时间】:2021-05-24 04:57:42
【问题描述】:
尝试的问题是按 A 列分组,如果 B 列中的任何值超过 100,则为组中的每一行创建一个标志。示例表如下所示-
| Column A | Column B |
|---|---|
| NYC | 95 |
| NYC | 98 |
| BOS | 88 |
| BOS | 101 |
| BOS | 67 |
| MIA | 90 |
而结果 df 看起来像这样-
| Column A | Column B | fg |
|---|---|---|
| NYC | 95 | |
| NYC | 98 | |
| BOS | 88 | 1 |
| BOS | 101 | 1 |
| BOS | 67 | 1 |
| MIA | 90 |
即使其中一个值超过 100,我也希望 fg 列为所有行返回 1。
尝试的代码如下-
df %>% group_by(Column A) %>% mutate(fg = ifelse(Column B >= 100 ,1, ''))
但这似乎出错了。还有什么方法可以用?
【问题讨论】:
-
columnB是一个向量,而100是一个标量。为了将其与标量向量匹配,需要将其转换为标量,因此请使用max(columnB),它返回要匹配的标量。使用这个df %>% group_by(Column A) %>% mutate(fg = ifelse(max(Column B) >= 100 ,1, ''))