【问题标题】:(From Stata to R) Converting egen-by to R(从 Stata 到 R)将 egen-by 转换为 R
【发布时间】:2021-03-07 19:30:59
【问题描述】:

如何将此 Stata 命令转换为 R?

我有一个由个人组成的数据库(每个人都是一行),但我还需要一些家庭变量来分析。在这种情况下,我想要确定每个家庭的收入总额。 一个家庭的每个成员都是数据库中的一个个体,虽然我没有这些个体;标识,我有一个标识家庭的变量。 . 因为我也知道,对于每个人,2014 年的收入,在 Stata 我有这个命令来创建变量:

egen family_inc = total(annual_inc), by (id_family)

在哪里

family_inc是一个家庭的总收入 annual_inc 是个人赚取的总收入 id_family是数据中这个家族的标识

所以命令对 Stata 说: (1) 对于id_family的每个成员; (2) 找到该家族的所有成员; (3) 合计2014年的收入; (4) 将此值赋给一个新变量family_inc

我可以为此使用group_by() 吗?我在 R. 非常n00b。由于截止日期,我现在不能抽出一些时间来学习课程! course(df_damn, mother = FALSE, explicit = 3, !is.numeric("loads of"))

【问题讨论】:

  • 假设您在 R 中的数据对象被命名为 dat,然后执行 dat %>% group_by(id_family) %>% mutate(family_inc = sum(annual_inc, na.rm=TRUE))Thanks @r2evans。
  • 这工作:iris %>% group_by(Species) %>% mutate(pl_species = sum(Petal.Length, na.rm=TRUE))
  • 什么是pl_species?在 iris 上找不到它。
  • 这是被创建的新变量的名称。
  • 通常,在 cmets 中得到回答的问题不会被标记为已回答。它一直在发生。

标签: r stata


【解决方案1】:

以下Stata代码

webuse iris 
egen mean_petal_width = total(petwid), by(iris)

相当于R代码。

iris %>% 
    group_by(Species) %>% 
    mutate(
        # new_var_name   = function of other vars
        mean_petal_width = sum(Petal.Width, na.rm = TRUE)
    )

如果答案有帮助并解决了问题,请将其标记为已解决:)

【讨论】:

  • 学究式地,mean() 仅等效于 total() 对于大小为 1 的样本。
  • 或者当所有的观察结果都是 0 :)。我编辑了我的答案以更好地回答原始问题。在我的辩护中,我在 stata 版本中也写了mean(petwid),因此,R 和 Stata 的版本是等价的。但当然,更仔细地回答原始问题总是更好。
  • 你让我到了那里(笑脸)或者确实是 -1、0、1 等等。
【解决方案2】:

状态: egen family_inc = total(annual_inc), by (id_family)

我的解释: 生成family_inc 等于annual_incid_family 的每个级别内的总和

R 代码:

library(dplyr) 
df %>%
group_by(id_family) %>%
summarize(family_inc = sum(annual_inc))`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    相关资源
    最近更新 更多