简体   繁体   English

从 R 中的向量中删除不同的单词

[英]Removing different words from vector in R

Lets say I have in R a long data frame like this:假设我在 R 中有一个像这样的长数据框:

var1 <- c("Los Angeles - CA", "New York - NY", "Seattle - WA", "Los Angeles - CA", "New York - NY")
var2 <- c(1, 2, 3, 4, 5)

df <- data.frame(var1, var2)

I want to remove the " - State", to get a result like:我想删除“ - 状态”,以获得如下结果:

var1 <- c("Los Angeles", "New York", "Seattle", "Los Angeles", "New York")
var2 <- c(1, 2, 3, 4, 5)
df <- data.frame(var1, var2)

I wasn't able to figure out how to do so since I have more than 5,000 rows and cannot use gsub because I'd have to state every state abbreviation to remove.我无法弄清楚如何这样做,因为我有超过 5,000 行并且不能使用 gsub,因为我必须删除每个 state 缩写 state 。 I mean, there's dozens of patterns (-State) that I'd have to define a priori before using such functions,我的意思是,在使用这些函数之前,我必须先定义许多模式(-State),

Is there an easy way to remove all "-State" from that column at once by using some splitting pattern that I haven't figured out yet?有没有一种简单的方法可以通过使用一些我还没有弄清楚的拆分模式来一次从该列中删除所有“-State”?

Couple of options.几个选项。

Most basic would be to just remove the last 5 characters.最基本的就是删除最后 5 个字符。

library(stringr)
str_sub(var1, 1L, -6L)

Or maybe search for the pattern and delete that:或者也许搜索模式并删除它:

gsub(" - \\w+$","",var1)

or或者

str_remove_all(var1, " - \\w+$")

All will get you the same result所有人都会得到相同的结果

[1] "Los Angeles" "New York"    "Seattle"     "Los Angeles" "New York"   
var1 <- c("Los Angeles - CA", "New York - NY", "Seattle - WA", "Los Angeles - CA", "New York - NY")
gsub(" - [A-Z]+$", "", var1)
[1] "Los Angeles" "New York"    "Seattle"     "Los Angeles" "New York" 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM