2016-08-24 41 views
2

我有兩個dataframes:一個數據幀df1使用日期(他們去了一個月)和代碼比賽在數據幀的元素

Dates  Codes 
1/01/2016 AAA 
1/02/2016 BBB 
1/03/2016 CCC 
1/04/2016 DDD 

另據幀df2包括日期和幾列用代碼

Dates  Code1 Code2 Code3 Code4 … Code100 
1/01/2016 AAA BBB ABC CCC  DCD 
1/02/2016 AAA BCB DCA CDA  ACA 
1/03/2016 BBB CCC CBC ACA  ABC 
1/04/2016 CBC BBB AAA DCD  CDC 

我需要做的是找出是否在特定日期從df1公司也包括在df2。 我試圖合併兩個數據框使用日期作爲關鍵並使用匹配功能。它融合了罰款,但現在我需要的任何代碼1來定位特定的代碼(代碼列) - Code100列:

合併後的數據幀df3

Dates  Codes Code1 Code2 Code3 Code4 … Code100 
1/01/2016 AAA  AAA BBB ABC CCC  DCD 
1/02/2016 BBB  AAA BCB DCA CDA  ACA 
1/03/2016 CCC  BBB CCC CBC ACA  ABC 
1/04/2016 DDD  CBC BBB AAA DCD  CDC 

match(df3[1,2], df3[1,3:102]) 

返回假,而很顯然,「AAA 」有沒有在df3[1, 3]

我需要什麼返回是這樣的:

Dates  Codes Code1 Code2 Code3 Code4 … Code100 IsPresent 
1/01/2016 AAA  AAA BBB ABC CCC  DCD  1 
1/02/2016 BBB  AAA BCB DCA CDA  ACA  0 
1/03/2016 CCC  BBB CCC CBC ACA  ABC  1 
1/04/2016 DDD  CBC BBB AAA DCD  CDC  0 
+1

'df2 [match(df1 $ Dates,df2 $ Dates),]' –

+0

不,它不起作用。對於'df1'中的每個'date' /'code'對,我需要它在給定日期(=在該日期開始的行中)查找代碼是否存在於'df2'中。 – m45ha

+0

試試看,合併(df1,df2)' –

回答

0

您可以嘗試。檢查第二列df3中的值是否包含在從第3列到第102列的任何列中,並使用as.numeric將布爾值轉換爲數字。

df3$IsPresent <- as.numeric(apply(df3, 1, function(x) x[2] %in% x[3:102])) 

df3$IsPresent 
# [1] 1 0 1 0