x y
2 4
5 8
1 4
9 12
我有四个条件
- maxx = 3, minx = 1, maxy = 6, miny = 3。(如果 minx < x < maxx 且 miny < y < maxy,则 z = apple)
- maxx = 6,minx = 4,maxy = 9,miny = 7。(如果 minx < x < maxx 且 miny < y < maxy,则 z = ball)
- maxx = 2,minx = 0,maxy = 5,miny = 3。(如果 minx < x < maxx 且 miny < y < maxy,则 z = pine)
- maxx = 12,minx = 7,maxy = 15,miny = 11。(如果 minx < x < maxx 且 miny < y < maxy,则 z = orange)
预期结果:
x y z
2 4 apple
5 8 ball
1 4 pine
9 12 orange
我有数千行,这四个条件将适合所有值。
我如何使用 mutate 函数执行此操作?我知道如何直接操作数字,但不确定如何根据条件语句存储字符。
最佳答案
我认为这里最好的选择是使用 dplyr::case_when
df %>% mutate(z = case_when(
x < 3 & x > 1 & y < 6 & y > 3 ~ "apple" ,
x < 6 & x > 4 & y < 9 & y > 7 ~ "ball" ,
x < 2 & x > 0 & y < 5 & y > 3 ~ "pine" ,
x < 12 & x > 7 & y < 15 & y > 11 ~ "orange"
)
)
这给了我们:
# A tibble: 4 x 3
x y z
<dbl> <dbl> <chr>
1 2 4 apple
2 5 8 ball
3 1 4 pine
4 9 12 orange
关于r - 如何根据条件语句和 dplyr 创建新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36003699/