Удаление строк на основе интервалов для значения? - PullRequest
0 голосов
/ 09 мая 2018
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),]

1 Ответ

0 голосов
/ 09 мая 2018

Использование 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

EDIT:

Если вы хотите выбрать значения от 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
...