2017-12-28 7 views
0

그래서 두 개의 다른 데이터 집합이 있고 열 이름에 다른 데이터 집합에 중복 된 열 이름이 있는지 확인하려고합니다. 예를 들어 :다른 데이터 집합에 열 이름이 있는지 확인

V1 V2 V3 
1  2  3 

와 같은 하나의 데이터 세트와

V4 V6 V1 V2 
NA NA NA NA 

그리고 내가 만들려고 노력하고 그렇게 두 번째 데이터 세트는이

V4 V6 V1 V2 
NA NA 1 NA 

같은 곳에서만 최소 값 원본 데이터 세트는 이후에 복사되면 복사됩니다. 이 함수를 사용하여 시도했다 :

if(ncol((Session1t[grep(temp1, names(Session1t))])) != 0) 

하지만이 작동하지 않습니다. 입력 값에 관계없이 동일한 값을 반환합니다. if 문을 입력 한 후에는 원하는 열만을 복사하고 그 사실을 알아 냈습니다. if 문을 효과적으로 사용할 수 없습니다. 두 번째 데이터 프레임에`V2`는`NA 왜

+0

입니다 '? – www

+0

왜'V1' 만 복사 되나'V2'는 복사되지 않습니까? – Uwe

답변

2

우리는 열 이름과 일치 1.

# Create example data frame D1 
D1 <- read.table(text = "V1 V2 V3 
1  2  3", 
       header = TRUE) 

# Create example data frame D2 
D2 <- read.table(text = "V4 V6 V1 V2 
NA NA NA NA", 
       header = TRUE) 

# Replace NA to 1 if column names match 
D2[1, ] <- ifelse(names(D2) %in% names(D1), 1, NA) 
D2 
# V4 V6 V1 V2 
# 1 NA NA 1 1 
1

또는 다른 옵션을 NA을 대체 할 ifelse%in%을 사용할 수있는 것은 intersect

nm1 <- intersect(names(df1), names(df2)) 
df2[nm1] <- df1[nm1]