2016-08-24 3 views
2

나는 두 dataframes이 하나 날짜와 dataframe df1 (그들은 월별로 이동) 및 코드을 일치 dataframe의 요소는

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

또 다른 dataframe 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 열 :

병합 dataframe 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 "분명하다 동안

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 [경기 (DF1의 $ 날짜, DF2의 $ 날짜)]' –

+0

아니, 그것은 작동하지 않습니다. 'df1'에있는 모든'date' /'code' 쌍에 대해 주어진 날짜에 코드가'df2'에 있는지 (= 해당 날짜로 시작하는 행에) 찾을 필요가 있습니다. – m45ha

+0

'merge (df1, df2)'시도 –

답변

0

당신은로 시도 할 수 있습니다 : "나는 돌아 필요 무엇

df3[1, 3]에 존재하는 것은 이것이다. 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