read.dta()输入和导出的子集列

时间:2015-01-15 12:44:16

标签: r import subset stata

我想将Stata文件读取到R,转换并对其进行子集化,然后将其导出,将value.table属性中存在的值标签保留为输出的Stata文件中的值标签。

我正在提供DHS调查中的一个小型Stata文件,用作输入和示例源文件。在此下载:https://www.dropbox.com/s/rrm66fjerub7xiw/BJIR31FL.zip?dl=0

代码只读取Stata文件,其中三列为子集。然后修改属性以匹配选定的变量子集,并导出。

问题是我无法从导出的Stata文件中显示的label.table属性中获取标签。只存在基础整数值。

有什么建议吗?似乎这种行为没有很好的记录。

install.packages("foreign")
library(foreign)  



statafile <- read.dta("BJIR31FL.DTA", convert.factors=TRUE)


stataattr <- attributes(statafile)

myvars <- c("v104","m2a_1","m14_1")
statafilesub <- statafile[,myvars]

stataattr$names <- attributes(statafile)$names[attributes(statafile)$names %in% myvars]
stataattr$formats <- attributes(statafile)$formats[attributes(statafile)$names %in% myvars]
stataattr$types <- attributes(statafile)$types[attributes(statafile)$names %in% myvars]
stataattr$val.labels <- attributes(statafile)$val.labels[which(attributes(statafile)$names %in% myvars)]
stataattr$var.labels <- attributes(statafile)$var.labels[which(attributes(statafile)$names %in% myvars)]
stataattr$row.names <- attributes(statafile)$row.names
stataattr$label.table <- attributes(statafile)$label.table[myvars]
stataattr$class <- attributes(statafile)$class
stataattr$version <- attributes(statafile)$version
attributes(statafilesub) <- stataattr

write.dta(statafilesub, "D:/statafilesub.dta", convert.factors = "labels")

0 个答案:

没有答案