2011-12-09 2 views
0

I df.1 및 df.2 행 상이한 수 있고 itemIndex라는가 각 데이터 프레임에 고유 한 다음 R 프로그램 가지고R은 : 열을 기준으로 정렬되지 않은 데이터 프레임을 통합하는 방법을 값

df.1 = data.frame(ItemName = ItemNameVector, ItemIndex = ItemIndexVector) 
df.1.len = length(df$ItemName) 

df.2 = data.frame(ItemIndex = ItemIndexVector2) 

ret = vector(length = df.1.ret) 
for(i in 1:df.1.len) { 
    index = df.1[i, "ItemIndex"] 
    ret[i] = df.2[df.1$ItemIndex == index, "ItemName"] 
} 

즉, df.1 ItemIndex가 df.2 ItemIndex와 일치하는 모든 df.1 ItemName 값을 찾고 싶습니다. ItemIndex 값은 고유하지만 df.1과 df.2에서는 동일하지 않습니다.

나는 거기에 merge()가 있다고 생각하지만 각 필드의 값에 따라 선택적으로 사용할 수는 없었다.

R에서이 작업을 수행하는 가장 간단한 방법은 무엇입니까?

답변

1

귀하의 질문에 대한 답변입니다. 귀하의 코드는 df.2가 아닌 df.1의 데이터를 반환합니다.

subset(df.1, ItemIndex %in% df.2$ItemIndex, select=ItemName) 
2

(아이러니하게도 충분히) 귀하의 예제가 재현되지 않기 때문에 이것은, 검증되지 않은,하지만 난 당신이 match 찾고있을 것 같아요 :

ret <- df.2$ItemName[match(df.1$ItemIndex, df.2$ItemIndex)] 

match 즉, 일치의 위치를 ​​반환하므로 이것은 ItemIndex의 독창성을 전제로합니다.

+0

감사합니다. 정확히 내가 무엇을 찾고 있었는지. –

관련 문제