在Stata中,foreach x的R等价函数是什么?[关闭]

问题描述 投票:-1回答:1

在Stata中,如果我想循环遍历几个变量并标记所有变量,我会执行以下操作

foreach x in a c z t s {
cap label drop `x'
label define `x' 1 "Yes" 2 "No"
label values `x' `x'
}

请有人告诉我如何在R中执行此操作?

r label stata
1个回答
3
投票

R在Stata的意义上没有“标签”,也没有区分for循环的类型(如Stata的forvaluesforeach)。您可以使用因子变量,它们与标记的数值有些相似(并且在其建模命令中另外表现得像Stata的i.前缀表示法)。您可以以与Stata代码非常相似的方式从现有数据中创建因子变量。

我将假设您有一个名为dat的数据框,其中包含名为aczts以及可能的其他变量的变量。如果是这样,那么你想循环遍历变量的名称:

for (i in c("a", "c", "z", "t", "s")) {
    dat[[i]] <- factor(dat[[i]], levels = 1:2, labels = c("Yes", "No"))
}

如果这些名称在数据框(它们可能是)中是唯一的,您可以选择在数据框中循环变量的位置:

pos <- match(c("a", "c", "z", "t", "s"), names(dat))
for (i in pos) {
    dat[[i]] <- factor(dat[[i]], levels = 1:2, labels = c("Yes", "No"))
}

如果这些是您的数据集中唯一的变量,您可以使用lapply和一些小作弊符号:

dat[] <- lapply(dat, factor, levels = 1:2, labels = c("Yes", "No"))

有两个附加软件包提供更多类似Stata的标签功能:labelledHmisc,这可能值得探索。但是,在大多数情况下,因素可能会给你你想要的东西。

© www.soinside.com 2019 - 2024. All rights reserved.