如何从两个数据帧中获取which()返回类似的索引?

时间:2017-01-17 18:11:16

标签: r

我有两个数据帧(ma.sig,pricebreak),如下所示:

Date  A   B  C
01/1  1   0  1
02/1  1   0  1

Date  D   E  G
01/1  1   0  1
02/1  0   1  0

对于初学者,我只想检索第一行中所有非零值的列索引。我尝试通过以下方法执行此操作:

sig <- which(!ma.sig[1,]==0&!pricebreak[1,]==0)

sig <- which(!ma.sig[1,]==0)&which(!pricebreak[1,]==0) 

我希望它返回类似于:1,3(基于上面的示例数据帧)。但是,我得到了这串逻辑序列:

[1] TRUE FALSE TRUE

如何让它返回列索引?由于数据的性质,我不想使用merge来合并我的数据帧。

编辑:仅为了背景信息,上述数据帧是当值非零时打开的“信号”。我正在尝试使用sig来收集我可以用于主数据帧的索引,这样我只能在信号打开时计算和打印输出。

1 个答案:

答案 0 :(得分:0)

@serhatCevikel已经给出了答案: 我只是想为你的方便解释一下。

 ma.sig =
 Date  A   B  C
 01/1  1   0  1
 02/1  1   0  1
 pricebrake = 
 Date  D   E  G
 01/1  1   0  1
 02/1  0   1  0

现在按照你的方法:

sig <- which(!ma.sig[1,]==0)&which(!pricebreak[1,]==0)
print(sig)

给出:     是的,是的 现在试试:

which(sig)

它将返回TRUE值的索引:

  1 2 3

如果你知道的话请告诉我。我已经在我的终端检查了两次。希望你也能得到这个。