使用 gsub 在 R 中过滤数据帧

问题描述 投票:0回答:1

我尝试运行这段代码

filter_data <- states_data %>% 
                 filter(grepl("[0-9]+/km",Population.Density.a.),is.numeric(gsub("[^0-9]","",Population.Density.a.))>500)
print(filter_data)

正在执行但显示O数据。

我尝试分部分执行它,第一部分

grepl("[0-9]+/km",Population.Density.a.)
运行良好。第二部分:

is.numeric(gsub("[^0-9]","",Population.Density.a.))>500)

有问题,执行这部分时,出现 0 个结果。

r dataframe filter gsub
1个回答
0
投票

说明 Ronak Shah 的评论:

set.seed(0)

library(tidyverse)

# creating a toy dataset
states_data <- data.frame(
                 state = c("Kerala", "Goa", "Uttar Pradesh", "Rajasthan", "Tamil Nadu"),
                 Population.Density.a. = c(paste0(sample(100:1000, 3), "/km"), NA, "hello"))

states_data %>% 
  filter(as.numeric(gsub("[^0-9]","",Population.Density.a.))>500)

# Output:
          state Population.Density.a.
1           Goa                935/km
2 Uttar Pradesh                778/km
© www.soinside.com 2019 - 2024. All rights reserved.