比较R中的2个数据集

akz*_*akz 2 compare r extract dataset

我从一个名为babies2009的数据集中提取了2个数据集(3个向量计数,名称,性别)

一个是女孩2009,包含所有女孩和其他男孩2009.我想知道男孩和女孩之间有什么相似的名字.

我试过这个

common.names = (boys2009$name %in% girls2009$name)
Run Code Online (Sandbox Code Playgroud)

当我尝试

babies2009[common.names, ] [1:10, ]
Run Code Online (Sandbox Code Playgroud)

我得到的只是女孩名字而不是俗名.

我已经确认这两个数据集确实包含男孩和女孩,分别采取10个样本...

boys2009 [1:10,]
girsl2009 [1:10,]
Run Code Online (Sandbox Code Playgroud)

我还能如何比较2个数据集并确定它们共享的值.谢谢,

Ari*_*man 5

common.names = (boys2009$name %in% girls2009$name)给你一个长度的逻辑向量length(boys2009$name).因此,当您尝试从更长的data.frame中进行选择时babies2009[common.names, ] [1:10, ],最终会产生废话.

解决方案:在正确的data.frame上使用该逻辑向量!

boys2009 <- data.frame( names=c("Billy","Bob"),data=runif(2), gender="M" , stringsAsFactors=FALSE)
girls2009 <- data.frame( names=c("Billy","Mae","Sue"),data=runif(3), gender="F" , stringsAsFactors=FALSE)
babies2009 <- rbind(boys2009,girls2009)

common.names <- (boys2009$name %in% girls2009$name)

> boys2009[common.names, ]$names
[1] "Billy"
Run Code Online (Sandbox Code Playgroud)