首页 > 解决方案 > 根据值的间隔删除行?

问题描述

df = read.table(sep="",
            header=T, 
            text="Name    Age    Rate
                  Aira     23     90
                  Ben      32     98
                  Cat      27     95")

我想编写一个代码,删除 25 到 30 之间的所有年龄列观察结果。因此,结果将导致删除 27 岁的底行:

df = read.table(sep="",
            header=T, 
            text="Name    Age    Rate
                  Aira     23     90
                  Ben      32     98")

我试过这样写,但我很不喜欢我使用两种逻辑:

df <- df[!(25<df$Age<30),]

标签: rsubset

解决方案


使用subset

> subset(df, Age<25 | Age>30)
  Name Age Rate
1 Aira  23   90
2  Ben  32   98

使用您的原始尝试

 > df[df$Age<25 | df$Age>30, ] 
    Name Age Rate
 1 Aira  23   90
 2  Ben  32   98

编辑:

如果要选择 25 到 30 之间的值

> subset(df, Age>=25 & Age<=30) # Option1
  Name Age Rate
3  Cat  27   95

> df[df$Age>=25 & df$Age<=30,] # Option2
  Name Age Rate
3  Cat  27   95

> df[!c(df$Age<25 | df$Age>30), ] # Option3
  Name Age Rate
3  Cat  27   95

推荐阅读