0

同じ寸法の A、B の 2 つのデータ フレームがあります。各データ フレームの最初の列は日付です。A < B の 0 と A > B の 1 を持つ 3 番目のデータ フレームを作成したいと思います。ここでは、日付列を除いて要素ごとに比較が行われます。これは私がこれまで行ってきたことであり、ループせずに機能します。

C = A
C[] = 0
temp = unlist(as.relistable(as.matrix(C[-1])))
temp[which(A[-1]>B[-1])] = 1
C = data.frame(C[1], relist(temp)) 

しかし、これを行うにはもっと簡単な方法が必要なようです (特に、data.frame のサイズが同じ場合)。

一般的に、2 つのデータ フレームを要素ごとに比較し、結果を 3 番目のデータ フレームに書き込む適切な方法は何ですか?

4

1 に答える 1

2

TRUEFALSEあり10それぞれなので、これを行うことができるはずです...

C <- ( A > B ) + 0

最初の列を除外するには、次の[ようにサブセット化します。

C <- ( A[,-1] > B[,-1] ) + 0

そして例として:

A <- data.frame( Date1 = as.POSIXct( Sys.Date()+101:105 ) , Date2 = as.POSIXct( Sys.Date()-1001:1005 ) )
#       Date1      Date2
#1 2013-12-13 2010-12-07
#2 2013-12-14 2010-12-06
#3 2013-12-15 2010-12-05
#4 2013-12-16 2010-12-04
#5 2013-12-17 2010-12-03

B <- data.frame( Date1 = as.POSIXct( Sys.Date()+106:110 ) , Date2 = as.POSIXct( Sys.Date()-1006:1010 ) )
#       Date1      Date2
#1 2013-12-18 2010-12-02
#2 2013-12-19 2010-12-01
#3 2013-12-20 2010-11-30
#4 2013-12-21 2010-11-29
#5 2013-12-22 2010-11-28

C <- ( A > B ) + 0

#     Date1 Date2
#[1,]     0     1
#[2,]     0     1
#[3,]     0     1
#[4,]     0     1
#[5,]     0     1
于 2013-09-03T10:24:35.853 に答える