簡體   English   中英

根據條件 R 刪除行

[英]Remove rows based on condition R

我有這樣的數據

Name  Group  Heath  BP  PM
QW    DE23    20    60  10
We    Fw34    0.5   42  2.5
Sd    Kl78    0.4   0.1 0.5
Op    Ss14    43    45  96

如果該值小於 1.8,我需要刪除所有行

我使用了以下命令

 data[colSums(data)>=1.8]
 data[,colSums(data)>=1.8, drop=FALSE]
subset(data, select=colSums(data) >=1.8)

但我得到了這樣的錯誤“colSums(數據)中的錯誤:'x'必須是數字”

預期輸出

Name  Group  Heath  BP  PM
QW    DE23    20    60  10
We    Fw34    0.5   42  2.5
Op    Ss14    43    45  96

您可以使用 select 行,其總和為>=1.8

data[rowSums(data[-1:-2])>=1.8,]
#  Name Group Heath BP   PM
#1   QW  DE23  20.0 60 10.0
#2   We  Fw34   0.5 42  2.5
#4   Op  Ss14  43.0 45 96.0

或行中的任何元素>=1.8

data[rowSums(data[-1:-2]>=1.8)>0,]
#  Name Group Heath BP   PM
#1   QW  DE23  20.0 60 10.0
#2   We  Fw34   0.5 42  2.5
#4   Op  Ss14  43.0 45 96.0

data[-1:-2] select 數字列。

這是一個tidyverse的解決方案:


library(tidyverse)


df <- tibble::tribble(
    ~Name,~Group,~Heath,~BP,~PM,
   "QW",    "DE23",20,60,10,
  "We",    "Fw34",0.5,42,2.5,
  "Sd",    "Kl78",0.4,0.1,0.5,
   "Op",    "Ss14",43,45,96
  )


df %>% 
  filter_if(is.numeric,any_vars(.>=1.8))
#> # A tibble: 3 x 5
#>   Name  Group Heath    BP    PM
#>   <chr> <chr> <dbl> <dbl> <dbl>
#> 1 QW    DE23   20      60  10  
#> 2 We    Fw34    0.5    42   2.5
#> 3 Op    Ss14   43      45  96

代表 package (v0.3.0) 於 2020 年 12 月 7 日創建

最簡單的方法是使用 filter() function 從 dplyr package 結合 Z99938282F0416EFE4 自動檢測到數字列:

library(dplyr)

df <- data.frame(Name = c("QW", "We", "Sd", "Op"),
                 Group = c("DE23", "Fw34", "Kl78", "Ss14"),
                 Heath = c(20, 0.5, 0.4, 43),
                 BP = c(60, 42, 0.1, 45),
                 PM = c(10, 2.5, 0.5, 96))

df %>% filter(rowSums(select_if(., is.numeric)) >= 1.8)

  Name Group Heath BP   PM
1   QW  DE23  20.0 60 10.0
2   We  Fw34   0.5 42  2.5
3   Op  Ss14  43.0 45 96.0

base R Reduce的選項

df[Reduce(`|`, lapply(df[-(1:2)], `>=`, 1.8)),]
#   Name Group Heath BP   PM
#1   QW  DE23  20.0 60 10.0
#2   We  Fw34   0.5 42  2.5
#4   Op  Ss14  43.0 45 96.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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