我有一列数据,state_key
以及存储在distance_key
中的相关信息我想扫描state_key
以查找与state_m
匹配的内容,当有匹配时我希望它在distance_key
像这样:
state_key distance_key state_m distance_key
1 CA 100 NC 120
2 NC 120 OH 160
3 MA 130
4 OH 160
当你使用match()
时,它会告诉我是否有一个,但我还需要更多。
答案 0 :(得分:1)
你可以尝试:
mydf[ mydf$state_key %in% state_m,]
答案 1 :(得分:0)
如果要返回与state_m
中的条目及其对应的distance_key
匹配的所有行的数据框,请尝试以下操作:
df[df$state_key %in% state_m, cbind("state_key" , "distance_key")]
如果您只想在向量中使用相应的distance_key
值,则可以更简洁地返回:
df[df$state_key %in% state_m, "distance_key"]
如果state_m是单个值而不是值向量,则使用:
df[df$state_key == state_m, "distance_key"]
答案 2 :(得分:0)
使用更快,更高效的软件包 - data.table:
install.packages("data.table")
library(data.table)
在数据表中存储您要查找的状态列表
list.states <- as.data.table(state_m)
setnames(list.states,1,"STATE_CODE") # give some name to your column eg: STATE_CODE
setkey(list.states,STATE_CODE) # merging would be done on STATE_CODE
状态代码和距离的整个数据集应存储为数据表
dt.state.key <- as.data.table(state_key)
setnames(dt.state.key,1,"STATE_CODE") # same column name as in the list to be matched
setkey(dt.state.key,STATE_CODE) # merging would be done on this column
result <- merge(list.states,dt.state.key,all=F) # inner join (all=F) gives the match