双匹配data.frame

SFu*_*n28 1 r

我想在data.frame上进行双重匹配以提取行索引.例如,在下面的data.frame中,我想先匹配match1,并且在match1的每个元素中,我想匹配match2.把它想象成一个双重排序(首先按名称,然后按日期),除了我没有排序,我匹配

test = data.frame( name = c( "bob" , "jane","adam","jane" ,"bob" , "adam" ) , date = as.Date(c(1,2,2,1,2,1)))
match1 = c( "jane" , "adam", "bob")
match2 = c( as.Date(c(2,1)))
result = c( 2,4,3,6,5,1 )
Run Code Online (Sandbox Code Playgroud)

Bri*_*ggs 5

请注意,要使代码按写入方式工作,您需要zoo加载库(它掩码as.Date)

library("zoo")
Run Code Online (Sandbox Code Playgroud)

看起来你想要的是data.frame的标记,它对应于data.frame按照name依据排序match1然后date按照match2.您可以使用因子来创建此排序,然后order获取指标.

order(factor(test$name, match1), factor(as.character(test$date), as.character(match2)))
Run Code Online (Sandbox Code Playgroud)

as.character需要要挟日期字符,以便它们可以变成因素与正确的顺序.