我想在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 )
答案 0 :(得分:5)
请注意,要使代码按写入方式工作,您需要加载zoo
库(它掩盖as.Date
)
library("zoo")
看起来你想要的是data.frame对应于data.frame的指标,按name
排序match1
然后根据{{1}按date
排序}}。您可以使用因子来创建此排序,然后使用match2
来获取指标。
order
需要order(factor(test$name, match1), factor(as.character(test$date), as.character(match2)))
来强制将字符添加到字符中,以便将它们转换为具有正确排序的因子。
答案 1 :(得分:0)
检查双匹配的一种方法是对“test”进行双重排序(调用此test2)并测试“test”和“test2”的相等性