双匹配data.frame

时间:2011-10-03 22:58:45

标签: 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 )

2 个答案:

答案 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”的相等性