R 使用动物园';s值作为另一个动物园中的列查找
我正在尝试创建一个排序查找,以获得一个数据结构(理想情况下是一个zoo),该结构使用一个zoo(下面的myZoo2)中的值作为列名来查找另一个(myZoo)中的值。一个简单的例子:R 使用动物园';s值作为另一个动物园中的列查找,r,time-series,zoo,R,Time Series,Zoo,我正在尝试创建一个排序查找,以获得一个数据结构(理想情况下是一个zoo),该结构使用一个zoo(下面的myZoo2)中的值作为列名来查找另一个(myZoo)中的值。一个简单的例子: require('zoo') require('tseries') dates = c('1/1/2000','1/2/2000','1/3/2000') z1 = zoo(c(1,2,3),dates) z2 = zoo(c(4,5,6),dates) z3 = zoo(c(7,8,9),dates) myZoo
require('zoo')
require('tseries')
dates = c('1/1/2000','1/2/2000','1/3/2000')
z1 = zoo(c(1,2,3),dates)
z2 = zoo(c(4,5,6),dates)
z3 = zoo(c(7,8,9),dates)
myZoo = merge(z1,z2,z3)
colnames(myZoo) = c('a', 'b', 'c')
z4 = zoo(c('c', 'b', 'a'), dates)
z5 = zoo(c('b','a','b'), dates)
z6 = zoo(c('c', 'c', 'a'), dates)
myZoo2 = merge(z4,z5,z6)
myZoo
a b c
1/1/2000 1 4 7
1/2/2000 2 5 8
1/3/2000 3 6 9
myZoo2
z4 z5 z6
1/1/2000 c b c
1/2/2000 b a c
1/3/2000 a b a
我正在寻找输出:
1/1/2000 7 4 7
1/2/2000 5 2 8
1/3/2000 3 6 3
我一直在尝试该表单的多种不同表达方式:
myZoo[,colnames=z2]
以及匿名函数/应用等。提前感谢…您需要首先获得所需数据点的“坐标”
match(index(myZoo2)、index(myZoo))将匹配2个zoo对象的索引,match(as.vector(myZoo2)、names(myZoo))将获得列号列表
然后使用coord
将myZoo
子集,以获得所需的值。您仍然需要手动将数据“按摩”回zoo对象
coord <- cbind(match(index(myZoo2), index(myZoo)), match(as.vector(myZoo2), names(myZoo)))
coord
## [,1] [,2]
## [1,] 1 3
## [2,] 2 2
## [3,] 3 1
## [4,] 1 2
## [5,] 2 1
## [6,] 3 2
## [7,] 1 3
## [8,] 2 3
## [9,] 3 1
zoo(matrix(as.matrix(myZoo)[coord], nrow = nrow(myZoo)), order.by = index(myZoo))
##
## 1/1/2000 7 4 7
## 1/2/2000 5 2 8
## 1/3/2000 3 6 3
coord