繁体   English   中英

如何删除数据框中R中的某些行

[英]How to delete certain rows in R within dataframe

我的数据框是这样的

class  subject  marks
1      bio      30
2      chem     40
3      bio      0
4      phy      60
5      maths    0
6      chem     0

我想从“标记”列中删除所有具有“0”的行

我正在尝试以下代码,但它不起作用

 df %>% 
  filter(!str_detect(marks, '0'))

我看到一条已删除的评论,其中解释了更多。 我会尝试使它更具体。

您需要完全匹配,而不是使用str_detect进行部分匹配: marks != 0 在您的情况下,部分匹配具有误导性,因为 0 也出现在例如 60 中,实际上是所有marks 所以你不会摆脱任何行。 使用完全匹配: df %>% filter(marks != 0)

此外,对于像这样的简单任务,基本语法非常好,例如subset(df, marks != 0)df[df$marks != 0, ]

如果你想使用str_detect ,你应该像这样使用模式^0

df <- read.table(text="class  subject  marks
1      bio      30
2      chem     40
3      bio      0
4      phy      60
5      maths    0
6      chem     0", header = TRUE)

library(dplyr)
library(stringr)
df %>%
  filter(!str_detect(marks, "^0"))
#>   class subject marks
#> 1     1     bio    30
#> 2     2    chem    40
#> 3     4     phy    60

reprex 包于 2022-07-14 创建 (v2.0.1)

使用 base r 方法

a = read.table(text='class  subject  marks
1      bio      30
2      chem     40
3      bio      0
4      phy      60
5      maths    0
6      chem     0',header=T)

a=a[!a$marks==0,]

输出:

> a
  class subject marks
1     1     bio    30
2     2    chem    40
4     4     phy    60

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM