gpt4 book ai didi

r - 尝试不使用merge()和使用union(),match()或%in%合并两个数据帧

转载 作者:行者123 更新时间:2023-12-03 16:13:13 24 4
gpt4 key购买 nike

我想构造两个数据框并合并它们,而不使用任何形式的merge()。相反,我需要使用set操作union()和match()或%in%运算符。以下输出必须显示d1,d2的内容​​以及d1和d2合并的结果。

我已经想出如何使用merge()做到这一点,但我无法找到如何使用union()和match()或%in%运算符来做到这一点。或任何其他方式执行此操作。另外,我的输出与输出应不匹配。我是初学者,感谢您的帮助。

d1.Kids <- c("Jack", "Jill", "Jillian", "John", "James")
d1.States <- c("CA", "MA", "DE", "HI", "PA")

d1 <- data.frame(d1.Kids, d1.States, stringsAsFactors = FALSE)

d2.Ages <- c(10, 7, 12, 30)
d2.Kids <- c("Jill", "Jillian", "Jack", "Mary")

d2 <- data.frame(d2.Ages, d2.Kids, stringsAsFactors = FALSE)

# Merging two created data frame
merge <- merge(d1, d2, by.x = "d1.Kids", by.y = "d2.Kids", all = TRUE)

print(merge)

Output should be:

kids ages states
1 Jack 12 CA
2 Jill 10 MA
3 Jillian 7 DE
4 John NA HI
5 James NA PA
6 Mary 30 NA

最佳答案

这样的事情将完成问题的要求。
似乎很长,但实际上对于要合并的每个数据帧来说,这是一组相同的指令。

Kids <- union(d1$d1.Kids, d2$d2.Kids)

States <- rep(NA_character_, length(Kids))
Ages <- rep(NA_real_, length(Kids))

States[match(d1$d1.Kids, Kids)] <- as.character(d1$d1.States)
Ages[match(d2$d2.Kids, Kids)] <- d2$d2.Ages

mrg <- data.frame(Kids, States, Ages)

mrg
# Kids States Ages
#1 Jack CA 12
#2 Jill MA 10
#3 Jillian DE 7
#4 John HI NA
#5 James PA NA
#6 Mary <NA> 30

关于r - 尝试不使用merge()和使用union(),match()或%in%合并两个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56716973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com