[英]Using R/dplyr to filter columns?
我有一個簡單的 Q... 我有一個數據集,需要按某些參數進行過濾。 我希望在 R 中找到解決方案?
假人案例:
colour age animal red 10 dog yellow 5 cat pink 6 cat
我想對這個數據集進行分類,例如:
如果顏色為“紅色”或“粉紅色”且年齡 <7 且動物為“貓”,則 = 類別 1。否則為類別 2。
Output 將是:
colour age animal category red 10 dog 2 yellow 5 cat 2 pink 6 cat 1
有沒有辦法操縱 dplyr 來實現這一點? 我是臨床醫生而不是生物信息學家,所以 go 很容易!
您還可以將其操作為:
df$category <- with(df,!(colour %in% c('red', 'pink') & age < 7 & animal == 'cat')) + 1
df
# colour age animal category
#1 red 10 dog 2
#2 yellow 5 cat 2
#3 pink 6 cat 1
在dplyr
中:
df %>%
mutate(category = as.integer(!(colour %in% c('red', 'pink') &
age < 7 & animal == 'cat')) + 1)
我喜歡case_when
中的 case_when function 來設置更復雜的變異選擇。
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
由代表 package (v0.3.0) 於 2021 年 1 月 17 日創建
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.