我需要你心爱的帮助......
我有两个数据集。一个指定人员名称为tradeIDs,另一个人员ID指定(同一种类型)tradeIDs。我想知道哪个人有哪个ID。
数据:
personID tradeID Name tradeID
123 10 | Bob 7
123 5 | Bob 8
210 1 | Jack 3
210 7 | Jack 11
210 8 | Paul 5
988 11 | Paul 10
988 8 |
问题:
我想找出tradeID的重叠/交集,所以我知道哪个名称属于哪个personID。
结果 (应如下所示)
personID Name
123 Paul
210 Bob
988 Jack
难点:
创意&试验
有没有办法解决这个问题,例如通过数据框架比较?
非常感谢你的帮助!!!
答案 0 :(得分:0)
我要做的是:
类似于:
datA <- data.frame(personID=c( 123,123,210,210,210,988,988 ),tradeID=c( 10,5,1,7,8,11,8) )
datB <- data.frame(name=c("B","B","J","J","P","P"), tradeID=c( 7,8,3,11,5,10 ) )
mgd <- merge(datA,datB)
library(taRifx)
stopifnot( all( by(mgd$personID,as.factor(mgd$name),distinct) <=1 ) )
result <- subset(mgd, !duplicated(mgd$name),select=c(-tradeID) )
这在stopifnot上失败,因为Bob与personID 210和988相关联,这可能是你的示例数据中的拼写错误....如果删除它,它运作良好:
datA[7,"tradeID"] <- 12
mgd <- merge(datA,datB)
result <- subset(mgd, !duplicated(mgd$name),select=c(-tradeID) )
result
personID name
1 123 P
2 210 B
5 988 J