2017-09-15 3 views
0

경제학 실험 데이터를 분석해야합니다. 그래서 나는 하나의 데이터베이스 (14 976 obs)를 2로 나누었습니다. 하나는 유형 1 (7488 obs)이고 다른 하나는 유형 2 (7488 obs) 인 구매자를위한 것입니다. 각각 212 개의 변수가 있습니다. 여기행의 값이 일치하는 경우 조건부 대체

, 당신은 두 데이터베이스의 일부를 가지고 :

sellers 
ID  Gender Period Matching group Group Type Overcharging ... 
654  1   1   73   1  1  NA 
654  1   2   73   1  1  NA 
654  1   3   73   1  1  NA 
654  1   4   73   1  1  NA 
435  1   1   73   2  1  NA 
435  1   2   73   2  1  NA 
435  1   3   73   2  1  NA 
435  1   4   73   2  1  NA 

buyers 
ID  Gender Period Matching group Group Type Overcharging ... 
708  0   1   73   1  2  1 
708  0   2   73   1  2  0 
708  0   3   73   1  2  0 
708  0   4   73   1  2  1 
546  1   1   73   2  2  0 
546  1   2   73   2  2  0 
546  1   3   73   2  2  1 
546  1   4   73   2  2  0 

내가 과충전처럼 많은 변수를 가질 경우 판매자들에 구매자 행에 넣어 아니라 정보. 그래서 제가하고 싶은 것은 판매자 데이터베이스에서이 정보를 대체하는 것입니다.

많은 정보가 있습니다. 일치하는 그룹 73에서 우리는 기간 1에 대상 708이 과다 청구되었다는 것을 알고 있습니다 (그룹 1에있는 것). 이 남자들이 그룹 1과 일치 그룹 73에 속한다는 것을 알고 있으므로 나는 기간 1에 그를 과다 청구 한 판매자를 식별 할 수 있습니다 : 성별 = 654 인 654

그래서 판매자 데이터 프레임에 과다 청구 (일부 구매자) 값을 입력하여 판매자 행동을 분석하지만 적절한시기에 올바른 그룹과 올바른 일치 그룹에 대해 분석하고 싶습니다.

감사합니다. 도움을 주시면 감사하겠습니다 ...

답변

0

희망이 도움이됩니다.

library(dplyr) 
#join both dataframes on common columns 
merged_df <- left_join(sellers, buyers, by=c('Period', 'Matching_group', 'Group')) 

#find row_index which have missing "Overcharging" in sellers 
idx <- which(is.na(merged_df$Overcharging.x)) 
merged_df[idx, "Overcharging.x"] <- merged_df[idx, "Overcharging.y"] 

#drop unwanted columns to have the updated sellers 
sellers_updated <- merged_df[,-c(dim(sellers)[2]+1: dim(merged_df)[2])] 
colnames(sellers_updated) <- colnames(sellers) 
sellers_updated 
+0

해답을 주셔서 감사합니다. 그러나 해결책을 시도했지만 작동하지 않습니다. 그것은 내 원래의 데이터베이스보다 더 많은 관찰을 만듭니다 ... – Marc

+0

아마도 '구매자'데이터 프레임에'Period, Matching_group, Group' 조합에 대한 여러 레코드가 있습니다. 이것을 라이브러리 (dplyr)로 확인할 수 있습니다. 구매자 % group_by (기간, Matching_group, 그룹) %> 요약 (n = n()) %> % 필터 (n> 1)' – Prem

0

필요한 정보를 얻기 위해 병합을 수행 할 수 있습니다. 나는 위의 코드를 올바르게 작성하는 경우

# Select the Period, Matching Group, Group and Overcharging columns 
# Selection by column ID (2nd, 3rd, 4th, 6th columns) 
buyers_merge <- buyers[, c(2,3,4,6)] 
# Rename the Overcharging column 
names(buyers_merge)[4] <- "Overcharging_Buyers" 
# Merge 
sellers_merged <- merge(sellers, buyers_merge) 

지금,이 판매자 테이블의 사본에 Overcharging_Buyers 열을 추가해야합니다. 4 개의 열 이름 중 3 개가 일치하기 때문에 병합 기능이 자동으로 해당 열을 병합하고 일치하지 않는 열을 새 열로 추가해야합니다. 그런 다음 원래의 과충전 열을 새로 추가 된 정보로 바꿀 수 있습니다.

병합 기능에 대한 자세한 내용은 here을 참조하십시오.

관련 문제