简体   繁体   中英

How to create a vector indicating matches between the elements of one vector and any element in another?

I am trying to create a vector indicating whether country names in a data frame match any value from a separate list.

The separate list of country names looks like this:

list = c("Canada", "China", "Brazil")

I have a large data frame containing a column vector with country names:

region = c(1,2,3,4,5,6,7)
country = c("Canada", "Canada", "Canada", "United States", "United States", "Brazil", "Brazil")       

df = data.frame(region, country)
df

I would like the end result to look something like:

matches <- c(1,1,1,0,0,1,1)

new_df = data.frame(df, matches)
new_df

The real data frame is very large. Is there a computationally efficient way of doing this?

How about

transform(df,match=as.numeric(country %in% list))

?

(I can't help pointing out that the %in% operator is covered on the R help page for the "match" function ...)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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