0

我有以下需要转换为 R 的 Stata 代码(此代码使用 2019 年 5 年 ACS PUMS 文件):

/*Create a flag to identify workers in the household*/
gen worker=(wkl=="1")
replace worker=. if wkl==""

/*Generate a variable representing number of workers in the household*/
by serialno, sort: egen wihh=sum(worker)

我空白的地方是在以下地方:

  1. 我如何告诉 R 创建一个标志?我认为这与创建新变量不同?和

  2. 使用 SERIALNO 生成变量,并使用 sum 函数对新变量 (WIHH) 进行排序,该函数引用先前创建的工人标志的数量。

例如,我可以使用以下方法创建一个新变量:

2019PUMS$worker <- recode(2019PUMS$WKL, recodes = "1=1, else = NA", as.factor = T)

但是,我相信这只会在这里创建一个新变量,并且我认为这与创建标志不同。

4

1 回答 1

0

下面的 Stata 代码创建一个变量,worker如果现有变量wkl等于,"1"如果等于的值wkl等于缺失,则调用该变量""

gen worker=(wkl=="1")
replace worker=. if wkl==""

使用称为df保存数据的数据框,以下内容将执行相同的操作:

library(dplyr)
df <- df %>%
    mutate(worker = ifelse(wkl == "1", 1, ifelse(wkl != "", 0, NA)))

下面的代码指示 Stata 生成家庭中的工人数量(我相信它是由变量索引的serialno):

/*Generate a variable representing number of workers in the household*/
by serialno, sort: egen wihh=sum(worker)

要在 R 中执行此操作,您将使用以下内容:

df <- df %>%
    group_by(serialno) %>%
    mutate(wihh = sum(worker))

“标志”只是一个取值为 1 或 0 的变量(如果条件分别为真或假)。上面的 R 代码做同样的事情。(在 R 中,如果您愿意,您还可以创建采用布尔值TRUE/FALSE而不是 1/0 的标志。)

于 2021-09-07T16:33:42.527 回答