Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
731 views
Welcome To Ask or Share your Answers For Others

1 Answer

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 ...)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...