Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
785 views
in Technique[技术] by (71.8m points)

r - 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?

See Question&Answers more detail:os

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

1 Reply

0 votes
by (71.8m points)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...