我有一堆Stata .dta文件,我想在R中使用它们。
我的问题是变量名对我没有帮助,因为它们类似于"q0100“、"q0565”、"q0500“和”q0202“。然而,它们被贴上了"psu“、”怀孕人数“、”户主“和”航点“的标签。
我希望能够抓取标签("psu“,"waypoint”等。。)并将它们用作我的变量/列名,因为我更容易使用这些名称。
有没有办法做到这一点,最好是在R中,或者通过Stata本身?我知道库中有read.dta (外部),但不知道它是否可以将标签转换为变量名。
发布于 2010-01-28 03:22:58
R没有内置的方法来处理变量标签。就我个人而言,我认为这是应该修复的缺点。Hmisc确实为隐藏变量标签提供了一些便利,但标签只被该包中的函数识别。read.dta创建一个data.frame,其属性为"var.labels“,其中包含标签信息。然后,您可以从中创建数据字典。
> data(swiss)
> write.dta(swiss,swissfile <- tempfile())
> a <- read.dta(swissfile)
>
> var.labels <- attr(a,"var.labels")
>
> data.key <- data.frame(var.name=names(a),var.labels)
> data.key
var.name var.labels
1 Fertility Fertility
2 Agriculture Agriculture
3 Examination Examination
4 Education Education
5 Catholic Catholic
6 Infant_Mortality Infant.Mortality
当然,这个.dta文件没有非常有趣的标签,但是您的标签应该更有意义。
发布于 2015-11-12 13:12:08
我建议您使用新的haven package (GitHub)来导入数据。
正如Hadley Wickham在README.md file中提到的
你总是得到一个数据框,日期时间被转换为相应的R类,标记的向量作为新的标记类返回。您可以根据需要轻松地强制因子或将标签值替换为未命中的值。如果您还使用dplyr,您会注意到以一种方便的方式打印大型数据框。
(强调我的)
如果您使用RStudio,这将自动在View("data.frame")
查看器窗格(source)中的变量名下显示标签。
变量标签作为属性附加到每个变量。它们不会打印出来(因为它们往往很长),但如果您有RStudio的预览版,您将在修改后的查看器窗格中看到它们。
您可以使用以下命令安装软件包:
install.packages("haven")
并使用以下命令导入Stata date:
read_dta("path/to/file")
有关详细信息,请参阅:
help("read_dta")
发布于 2010-07-14 02:08:37
可以在Stata中将变量标签转换为变量名称,然后再将其导出为R或文本文件。
正如Ian提到的,变量标签通常不能作为好的变量名称,但如果将空格和其他字符转换为下划线,并且变量标签不太长,则可以很容易地使用varlabels重新标记变量。
下面的示例使用内置的Stata数据集"cancer.dta“将所有变量名替换为变量标签--重要的是,此代码不会尝试重命名没有变量标签的变量。注意,我还选择了一个数据集,其中有许多字符在命名变量时没有用(例如:=,1,',.,()等)...you可以将可能隐藏在变量标签中的任何字符添加到第五行的列表中:"local chars "...“”,它将为您进行更改:
****************! BEGIN EXAMPLE
//copy and paste this code into a Stata do-file and click "do"//
sysuse cancer, clear
desc
**
local chars "" " "(" ")" "." "1" "=" `"'"' "___" "__" "
ds, not(varlab "") // <-- This will only select those vars with varlabs //
foreach v in `r(varlist)' {
local `v'l "`:var lab `v''"
**variables names cannot have spaces or other symbols, so::
foreach s in `chars' {
local `v'l: subinstr local `v'l "`s'" "_", all
}
rename `v' ``v'l'
**make the variable names all lower case**
cap rename ``v'l' `=lower("``v'l'")'
}
desc
****************! END EXAMPLE
您还可以考虑看看Stat Transfer及其将Stata转换为R数据文件的功能。
https://stackoverflow.com/questions/2151147
复制相似问题