簡體   English   中英

使用 R/dplyr 過濾列?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM