我有一组不同名称的学院的数据集,如"x学院“、"x大学”和"x社区学院“,并需要根据它们对学院、社区学院或大学的分类对它们进行分组。
然后按州组织起来。有5行:名称、地点、两种类型的学费以及私人或公共的。
我尝试过: typeSchool <- c(“学院”、“大学”、“社区学院”)过滤器(tibble,str_detect(单词,粘贴(TypeSchool)
但它没有起作用。寻求建议。
我是否应该尝试变异变量,并为每个分类添加一个单独的变量,然后再添加group_by(分类)?
样本行:
此外,是否有可能为此使用grep的一种形式?
structure(list(Name = structure(c(5L, 1L, 6L, 4L, 3L, 2L), .Label = c("Bard College", “布朗大学”、“康涅狄格大学”、“达特茅斯学院”、“地标学院”、“圣约翰学院”、类=“因素”、地点=结构(c(5L、1L、6L、2L、3L、4L)、.Label = c("ANNANDALE-ON-HUDSON、NY“、"HANOVER、NH”、“新伦敦、CT”、“普罗维登斯、RI”、"PUTNEY、VT“、"SANTA FE、NM")、类=”因数“,In.State.Tuition = c(50080L、49906L、49644L、49506L、49350L、49346L)、Out.of.State.Tuition = c(50080L、49906L、49644L、49506L、49350L、49346L)、类型=结构(c( 1L、1L、1L、1L、1L、1L、1L)、row.names = c(NA、-6L)、类= c("tbl_df“、"tbl”、"data.frame"))
发布于 2020-05-03 20:01:19
我们可以用collapse与|一起创建一个字符串,在str_detect中用作pattern
library(stringr)
library(dplyr)
filter(tibble, str_detect(Name, paste(typeSchool, collapse = "|")))为了确保这不匹配任何子字符串,我们可以使用单词边界(\\b)
filter(tibble, str_detect(Name, paste0("\\b(", paste(typeSchool, collapse = "|"), ")\\b")))由于我们已经在使用stringr,有一个选项是str_c,如果缺少值,它将有帮助,因为它返回NA时,任何值都是NA,而不是paste,后者也将将NA粘贴到字符串中。
filter(tibble, str_detect(Name, str_c(typeSchool, collapse = "|")))更新
如果目的是根据“类型学校”拆分或创建多个数据集,我们可以在“typeSchool”之上使用map,filter基于子字符串匹配的行返回一个tibbles的list
library(purrr)
lst1 <- map(typeSchool, ~ tibble %>%
filter(str_detect(Name, .x)))https://stackoverflow.com/questions/61580846
复制相似问题