【问题标题】:How do I categorise the merge in R, using Stata? [duplicate]如何使用 Stata 对 R 中的合并进行分类? [复制]
【发布时间】:2015-11-24 10:12:22
【问题描述】:

我是 Stata 用户,习惯于合并分类,_merge 取值从 1 到 5。这是我使用的代码:

locationcheck<-merge(location,pincodes,by="pincode",all.x=TRUE)

【问题讨论】:

  • 您的问题不清楚。对合并进行分类是什么意思?查看该教程:stat545-ubc.github.io/bit001_dplyr-cheatsheet.html
  • 如果您解释了_merge 报告的内容,R 用户会更清楚。它记录在stata.com/manuals14/dmerge.pdf,但你应该把解释放在这里。否则,您只是针对一小群精通 Stata 和 R 的人。
  • 对于 _merge 参考:1:观察仅出现在 master(左表)中 2:观察出现在 using(右表)中 3:观察出现在两者中 4:更新观察出现在两者中,缺失值更新5:冲突观察出现在两者中,来自stata.com/manuals13/dmerge.pdf的冲突非缺失

标签: r merge stata


【解决方案1】:

Askedanswered

根据上面链接的答案:

merge(x, y, by = intersect(names(x), names(y)),by.x = by, by.y = by, all = TRUE)
merge(x, y, by = intersect(names(x), names(y)),by.x = by, by.y = by, all.x = TRUE)
merge(x, y, by = intersect(names(x), names(y)),by.x = by, by.y = by, all.y = TRUE)

另外,提出上述问题的用户created a function to generate this variable(不是R用户,我没有测试过):

stata.merge <- function(x,y, by = intersect(names(x), names(y))){

x[is.na(x)] <- Inf
y[is.na(y)] <- Inf

matched <- merge(x, y, by.x = by, by.y = by, all = TRUE)
matched <- matched[complete.cases(matched),]
matched$merge <- "matched"
master <- merge(x, y, by.x = by, by.y = by, all.x = TRUE)
master <- master[!complete.cases(master),]
master$merge <- "master"
using <- merge(x, y, by.x = by, by.y = by, all.y = TRUE)
using <- using[!complete.cases(using),]
using$merge <- "using"

df <- rbind(matched, master,using)
df[sapply(df, is.infinite)] <- NA
df
}

重要的是,虽然我记得看到过这个问题,但通过搜索 [stata] [r] merge 很容易找到。

【讨论】:

    猜你喜欢
    • 2020-01-08
    • 1970-01-01
    • 2017-11-29
    • 2020-02-03
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 2017-07-09
    • 2020-08-16
    相关资源
    最近更新 更多