r - 使用 R/dplyr 过滤列?
问题描述
我有一个简单的 Q... 我有一个数据集,需要按某些参数进行过滤。我希望在 R 中有一个解决方案?
假人案例:
colour age animal
red 10 dog
yellow 5 cat
pink 6 cat
我想对这个数据集进行分类,例如:
如果颜色为“红色”或“粉红色”且年龄 <7 且动物为“猫”,则 = 类别 1。否则为类别 2。
输出将是:
colour age animal category
red 10 dog 2
yellow 5 cat 2
pink 6 cat 1
有没有办法操纵 dplyr 来实现这一点?我是临床医生而不是生物信息学家,所以放轻松!
解决方案
我喜欢case_when
dplyr 中使用 mutate 设置更复杂的选择的功能。
library(tidyverse)
df <- data.frame(colour = c("red", "yellow", "pink", "red", "pink"),
age = c(10, 5, 6, 12, 10),
animal = c("dog", "cat", "cat", "hamster", "cat"))
df
#> colour age animal
#> 1 red 10 dog
#> 2 yellow 5 cat
#> 3 pink 6 cat
#> 4 red 12 hamster
#> 5 pink 10 cat
df <- mutate(df, category = case_when(
((colour == "red" | colour == "pink") & age < 7 & animal == "cat") ~ 1,
(colour == "yellow" | age != 5 & animal == "dog") ~ 2,
(colour == "pink" | animal == "cat") ~ 3,
(TRUE) ~ 4) )
df
#> colour age animal category
#> 1 red 10 dog 2
#> 2 yellow 5 cat 2
#> 3 pink 6 cat 1
#> 4 red 12 hamster 4
#> 5 pink 10 cat 3
由reprex 包(v0.3.0)于 2021-01-17 创建
推荐阅读
- javascript - 反应:this.state 未定义
- python - 尝试从表中抓取数据,bs4 给出 None 尽管值存在
- mysql - 错误代码:1822。添加外键约束失败。引用表“instructor”中缺少约束“student_ibfk_2”的索引
- spring - spring-kafka 错误处理程序调用了太多次
- python-3.x - Ignite 仅返回长时间运行查询的预期输出的子集
- html - 将 2 个 DIV 定位在 1 个 DIV 下
- c - fgets 不会停止获取输入 C
- c# - 清除为 int 值 (DbNull.Value)
- verilog - 将始终块用于半加器时出错:总和不是有效的左值
- c - 如何正确创建 MPI 自定义类型