저는 R의 초보 사용자입니다. 다음과 같은 문제가 있습니다.다른 데이터 프레임을 사용하여 데이터 프레임의 여러 열을 업데이트
2 개 이상의 데이터 프레임을 병합하려고합니다. 병합하는 동안 5 개의 변수가 있고 두 개의 데이터 프레임에 여러 개의 다른 겹치는 열이 있습니다. 한 데이터 프레임에서 이러한 중복 변수를 다른 변수로 업데이트하려고합니다. 나는이 웹 사이트를 수색하고 몇몇 응답을 찾아 냈다 그러나 그들의 아무도는 나의 경우에는 능률적 없다. 그 이유는 업데이트 할 컬럼이 여러 개 있기 때문입니다. 마지막으로 100 개의 월 데이터를 병합 할 때 중복되는 컬럼의 이름을 항상 알지 못합니다. 이전 솔루션은 일반적으로 코드의 각 열의 이름을 작성하여 업데이트하지만 이름을 사용하지 않고이를 수행하는 방법을 찾고 있습니다. 예를 들어
, 말할 수 ..tuse1
age d1 a1 a2 a3 a4 a5
1 89 2 3 3 NA NA
2 34 3 4 5 NA NA
tuse2
age d1 a1 a2 a3 a4 a5 a6
1 89 2 3 3 3 6 2
2 34 3 4 5 4 7 2
3 32 4 3 3 6 6 6
나는 나이와 D1에 의해 tuse1 및 tuse2 병합 싶어요. 코드의 열 이름을 사용하지 않고 tuse1 NA 변수를 tuse2로 업데이트 할 수있는 코드가 필요합니다.
는 여기에 내 코드입니다 :
key = c("age", "d1")
comNam = intersect(names(tuse1), names(tuse2))
comNam = comNam[3:length(comNam)]
merge_second_age = merge(x = tuse1, y = tuse2, all = TRUE, by = c(key))
for(i in comNam){
left <- paste(i, ".x", sep="")
right <- paste(i, ".y", sep="")
merge_second_age$i = with(merge_second_age, factor(ifelse(is.na(left), right, left)))
merge_second_age$left = NULL; merge_second_age$right = NULL
merge_second_age$left = NULL; merge_second_age$right = NULL
}
이 코드는 원하는 출력을 제공하지 않습니다 불행히도 오류없이 작동하는 것처럼 보이지만. 다음과 같이
내가보고하고 원하는 출력은 다음과 같습니다
age d1 a1 a2 a3 a4 a5 a6
1 89 2 3 3 3 6 2
2 34 3 4 5 4 7 2
내가 어떤 도움을 주셔서 감사합니다.
최저 Dilsat는
당신이 원하는 출력을 제공 할 수 있습니까? – 989
예를 들어 원하는 출력을 줄 수 있습니까? 예를 들어 age = 2, d1 = 34의 경우 두 dfs간에 'a2'값이 다른 경우 어떻게됩니까? – jalapic
Hello @ m0h3n, 빠른 답장을 보내 주셔서 감사합니다. 방금 질문을 편집하고 원하는 출력을 추가했습니다. 코드에서 원래의 데이터 세트처럼 변수 이름을 사용하지 않도록 노력하고 있습니다. 코드에서 이러한 중복되는 열을 찾아서 업데이트해야합니다. 백만 번 감사드립니다!:) – Dilsat