itsource

dplyr에 가입할 때 x와 y에 대한 열 이름을 지정하는 방법은 무엇입니까?

mycopycode 2023. 6. 6. 08:20
반응형

dplyr에 가입할 때 x와 y에 대한 열 이름을 지정하는 방법은 무엇입니까?

dplyr을 사용하여 가입하고자 하는 데이터 프레임이 두 개 있습니다.하나는 이름을 포함하는 데이터 프레임입니다.

test_data <- data.frame(first_name = c("john", "bill", "madison", "abby", "zzz"),
                        stringsAsFactors = FALSE)

다른 데이터 프레임에는 성별을 식별하는 칸트로비츠 이름 코퍼스의 정리된 버전이 포함되어 있습니다.다음은 최소한의 예입니다.

kantrowitz <- structure(list(name = c("john", "bill", "madison", "abby", "thomas"), gender = c("M", "either", "M", "either", "M")), .Names = c("name", "gender"), row.names = c(NA, 5L), class = c("tbl_df", "tbl", "data.frame"))

저는 본질적으로 이름의 성별을 검색하고 싶습니다.test_data를 사용하여 테이블kantrowitz표. 제가 이것을 함수로 추상화할 것이기 때문입니다.encode_gender사용할 데이터 집합의 열 이름을 알 수 없으므로, 사용될 것이라고는 장담할 수 없습니다.name에 있어서와 같이kantrowitz$name.

기본 R에서 병합을 수행하는 방법은 다음과 같습니다.

merge(test_data, kantrowitz, by.x = "first_names", by.y = "name", all.x = TRUE)

그러면 올바른 출력이 반환됩니다.

  first_name gender
1       abby either
2       bill either
3       john      M
4    madison      M
5        zzz   <NA>

하지만 저는 다른 모든 데이터 조작을 위해 이 패키지를 사용하고 있기 때문에 이 공급업체를 하고 싶습니다.디플라이어by다양한 옵션*_join함수를 사용하면 열 이름을 하나만 지정할 수 있지만 두 개만 지정해야 합니다.저는 다음과 같은 것을 찾고 있습니다.

library(dplyr)
# either
left_join(test_data, kantrowitz, by.x = "first_name", by.y = "name")
# or
left_join(test_data, kantrowitz, by = c("first_name", "name"))

dplyr을 사용하여 이러한 종류의 조인을 수행하는 방법은 무엇입니까?

(칸트로비츠 말뭉치가 성별을 식별하는 나쁜 방법이라는 것은 신경 쓰지 마세요.더 나은 구현을 위해 노력하고 있지만, 먼저 이 작업을 수행하고 싶습니다.)

이 기능은 dplyr v0.3에 추가되었습니다.이제 명명된 문자 벡터를 에 전달할 수 있습니다.by에 있어서의 논쟁.left_join(및 기타 결합 함수) - 각 데이터 프레임에서 결합할 열을 지정합니다.원래 질문에 제시된 예에서 코드는 다음과 같습니다.

left_join(test_data, kantrowitz, by = c("first_name" = "name"))

이는 실제 해결책이라기보다는 해결책에 가깝습니다.새 개체를 생성할 수 있습니다.test_data다른 열 이름으로:

left_join("names<-"(test_data, "name"), kantrowitz, by = "name")

     name gender
1    john      M
2    bill either
3 madison      M
4    abby either
5     zzz   <NA>

언급URL : https://stackoverflow.com/questions/21888910/how-to-specify-names-of-columns-for-x-and-y-when-joining-in-dplyr

반응형