我有一组具有不同名称的大学的数据集,例如“ x学院”,“ x大学”和“ x社区学院”,需要根据大学,社区学院或大学的分类对它们进行分组。
然后按州组织它们。有5行:名称,位置,两种学费以及私人或公共学费。
我已经尝试过了: typeSchool <-c(“学院”,“大学”,“社区学院”) filter(tibble,str_detect(words,paste(typeSchool)))
但是它没有用。寻找建议。
我应该尝试对变量进行突变并为每个分类添加一个单独的变量,然后再对group_by(classification)进行添加吗?
示例行:
还可以为此使用grep的形式吗?
structure(list(Name = structure(c(5L, 1L, 6L, 4L, 3L, 2L), .Label = c("Bard College",
“布朗大学”,“康涅狄格大学”,“达特茅斯学院”, “ Landmark College”,“ St。John's College”),class =“ factor”), 位置=结构(c(5L,1L,6L,2L,3L,4L),.Label = c(“ ANNANDALE-ON-HUDSON,NY”, “新罕布什尔州汉诺威”,“康涅狄格州新伦敦”,“ RI省”,“佛蒙特州普特尼”, “ SANTA FE,NM”),class =“ factor”),In.State.Tuition = c(50080L, 49906L,49644L,49506L,49350L,49346L),州外学费= c(50080L, 49906L,49644L,49506L,49350L,49346L),类型=结构(c(1L, 1L,1L,1L,1L,1L),.Label =“ Private”,class =“ factor”)),row.names = c(NA, -6L),class = c(“ tbl_df”,“ tbl”,“ data.frame”))
答案 0 :(得分:0)
我们可以将collapse
与|
一起创建一个字符串,以用作pattern
中的str_detect
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
时会返回paste
,而不是{{1 }}也会将NA粘贴在字符串中
filter(tibble, str_detect(Name, str_c(typeSchool, collapse = "|")))
如果要基于'typeSchool'拆分或创建多个数据集,我们可以map
在'typeSchool'之上,filter
基于子字符串匹配的行将返回{{ 1}}的小词
list