Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何删除列中的第一个单词和最后一个单词?_R_String_Tidyverse - Fatal编程技术网

R 如何删除列中的第一个单词和最后一个单词?

R 如何删除列中的第一个单词和最后一个单词?,r,string,tidyverse,R,String,Tidyverse,我试图删除CCGName列中的第一个单词和最后一个单词,仅使用R中的tidyverse。CCG列包含NHS一词,城市名称后跟CCG。我想去掉NHS和CCG这两个词。有没有办法只使用tidyverse 这是我的数据样本: structure(list(SiteType = c(111, 111, 111, 111, 111, 111, 111, 111, 111, 111), `Call Date` = c("18/03/2020", "18/03/2020&quo

我试图删除CCGName列中的第一个单词和最后一个单词,仅使用R中的tidyverse。CCG列包含NHS一词,城市名称后跟CCG。我想去掉NHS和CCG这两个词。有没有办法只使用tidyverse

这是我的数据样本:

structure(list(SiteType = c(111, 111, 111, 111, 111, 111, 111, 
111, 111, 111), `Call Date` = c("18/03/2020", "18/03/2020", "18/03/2020", 
"18/03/2020", "18/03/2020", "18/03/2020", "18/03/2020", "18/03/2020", 
"18/03/2020", "18/03/2020"), Gender = c("Female", "Female", "Female", 
"Female", "Female", "Female", "Female", "Female", "Female", "Female"
), AgeBand = c("0-18 years", "0-18 years", "0-18 years", "0-18 years", 
"0-18 years", "0-18 years", "0-18 years", "0-18 years", "0-18 years", 
"0-18 years"), CCGCode = c("E38000004", "E38000009", "E38000020", 
"E38000023", "E38000029", "E38000010", "E38000030", "E38000035", 
"E38000008", "E38000025"), CCGName = c("NHS Barking and Dagenham CCG", 
"NHS Bath and North East Somerset CCG", "NHS Brent CCG", "NHS Bromley CCG", 
"NHS Canterbury and Coastal CCG", "NHS Bedfordshire CCG", "NHS Castle Point and Rochford CCG", 
"NHS City and Hackney CCG", "NHS Bassetlaw CCG", "NHS Calderdale CCG"
), `April20 mapped CCGCode` = c("E38000004", "E38000231", "E38000020", 
"E38000244", "E38000237", "E38000010", "E38000030", "E38000035", 
"E38000008", "E38000025"), `April20 mapped CCGName` = c("NHS Barking and Dagenham CCG", 
"NHS Bath and North East Somerset, Swindon and Wiltshire CCG", 
"NHS Brent CCG", "NHS South East London CCG", "NHS Kent and Medway CCG", 
"NHS Bedfordshire CCG", "NHS Castle Point and Rochford CCG", 
"NHS City and Hackney CCG", "NHS Bassetlaw CCG", "NHS Calderdale CCG"
), TriageCount = c(35, 9, 21, 11, 11, 27, 12, 12, 6, 9)), row.names = c(NA, 
-10L), class = c("tbl_df", "tbl", "data.frame"))
我们可以使用str_replace匹配第一个单词和空格后的字符,将其捕获为一个组,并替换为捕获组的反向引用

library(dplyr)
library(stringr)
df2 <- df %>% 
      mutate(CCGName = str_replace(CCGName, "^\\w+\\s+(.*)\\s+\\w+", '\\1'))
注意:这只使用tidyverse解决方案作为文章中提到的OP。此外,它是一种通用的解决方案,可以删除第一个和最后一个单词

-输出

df2$CCGName
#[1] "Barking and Dagenham"         "Bath and North East Somerset" "Brent"                        "Bromley"                     
#[5] "Canterbury and Coastal"       "Bedfordshire"                 "Castle Point and Rochford"    "City and Hackney"            
#[9] "Bassetlaw"                    "Calderdale"
我们可以使用str_replace匹配第一个单词和空格后的字符,将其捕获为一个组,并替换为捕获组的反向引用

library(dplyr)
library(stringr)
df2 <- df %>% 
      mutate(CCGName = str_replace(CCGName, "^\\w+\\s+(.*)\\s+\\w+", '\\1'))
注意:这只使用tidyverse解决方案作为文章中提到的OP。此外,它是一种通用的解决方案,可以删除第一个和最后一个单词

-输出

df2$CCGName
#[1] "Barking and Dagenham"         "Bath and North East Somerset" "Brent"                        "Bromley"                     
#[5] "Canterbury and Coastal"       "Bedfordshire"                 "Castle Point and Rochford"    "City and Hackney"            
#[9] "Bassetlaw"                    "Calderdale"
您也可以尝试:

library(dplyr)
#Code
df <- df %>% mutate(CCGName=trimws(gsub('NHS|CCG','',CCGName)))
您还可以通过下一个代码获得相同的输出。非常感谢@BenBolker:

您也可以尝试:

library(dplyr)
#Code
df <- df %>% mutate(CCGName=trimws(gsub('NHS|CCG','',CCGName)))
您还可以通过下一个代码获得相同的输出。非常感谢@BenBolker:



这真是一个优雅的,鸭子。感谢you@GaB很乐意帮忙@这也是一个很好的建议,博克博士@本伯克非常有效,博克博士!我将把它添加到解决方案中。@BenBolker重新更新,非常感谢先生!这真是一个优雅的,鸭子。感谢you@GaB很乐意帮忙@这也是一个很好的建议,博克博士@本伯克非常有效,博克博士!我将把它添加到解决方案中。@BenBolker重新更新,非常感谢先生!这个问题很清楚地说明了tidyverse…我认为非tidyverse是有争议的。以前接受的答案确实使用了base-R函数trimws,gsub,但总体框架是tidyverse ish mutate+%>%这个-^\\w+\\s+.\\s+\\w+,“\\1”怎么样。这不是一个基本的R吗?我只是觉得投票给这个人确实有点挑战性-@BenBolker我明白你的意思了。我的要求是更改问题标题,以减少混淆,因为仅使用tidyverse方法,利用这些软件包中提供的功能。此外,上面提到的OP是否有一种方法可以只使用tidyverse来实现这一点?@GaB您正在展示的是一个正则表达式。它用于stru_replace,可以是gsub或sub,但stringr是一个tidyverse包。这个问题非常清楚地说明了tidyverse…我认为非tidyverse是有争议的。以前接受的答案确实使用了base-R函数trimws,gsub,但总体框架是tidyverse ish mutate+%>%这个-^\\w+\\s+.\\s+\\w+,“\\1”怎么样。这不是一个基本的R吗?我只是觉得投票给这个人确实有点挑战性-@BenBolker我明白你的意思了。我的要求是更改问题标题,以减少混淆,因为仅使用tidyverse方法,利用这些软件包中提供的功能。此外,上面提到的OP是否有一种方法可以只使用tidyverse来实现这一点?@GaB您正在展示的是一个正则表达式。它用于stru_replace,可以是gsub或sub,但stringr是一个tidyverse包