R语言 如果列包含特定字符串,则按值过滤数据集

2j4z5cfb  于 2023-03-27  发布在  其他
关注(0)|答案(2)|浏览(128)

我有一个数据集,看起来像这样:

> dput(df)
structure(list(Car = c("Mazda", "Mazda", "Mazda", "Mazda", "Mazda", 
"Mazda", "Lexus"), Date = c("2/20/20", "2/21/20", "2/22/20", 
"2/23/20", "2/24/20", "2/25/20", "9/3/20")), class = "data.frame", row.names = c(NA, 
-7L))

我只想过滤Car=="Mazda"的日期。
在此场景中,如果日期范围不在2/20/20 - 2/23/20之间,我希望删除Mazda汽车行。
谢谢大家!

bhmjp9jg

bhmjp9jg1#

你可以从dplyr中得到filterbetween,像这样:

library(dplyr)
df %>%
  filter(Car == 'Mazda' & between(Date, '2/20/20', '2/23/20'))
#>     Car    Date
#> 1 Mazda 2/20/20
#> 2 Mazda 2/21/20
#> 3 Mazda 2/22/20
#> 4 Mazda 2/23/20

你可以像这样使用not !

library(dplyr)
df %>%
  filter(!(Car == 'Mazda' & !between(Date, '2/20/20', '2/23/20')))
#>     Car    Date
#> 1 Mazda 2/20/20
#> 2 Mazda 2/21/20
#> 3 Mazda 2/22/20
#> 4 Mazda 2/23/20
#> 5 Lexus  9/3/20

创建于2023-03-23带有reprex v2.0.2

iqih9akk

iqih9akk2#

如果你不想使用包,你可以简单地使用data.frame索引:

df$Date = as.Date(strptime(paste0(data$Date,"20"),"%m/%d/%Y"))

df$Date[data$Car=="Mazda"]

mazdaData = df[data$Car=="Mazda",]

mazdaTimeData = df[data$Car=="Mazda"&
                   data$Date<as.Date("2020-02-23")& 
                   data$Date>as.Date("2020-02-20"),]

另外,我建议设置一个包含全年的日期格式。这对其他程序来说更容易理解。

相关问题