2013-05-17 226 views
5

我有一個R數據集,我使用{Hmisc}包應用變量標籤。但是,當我將數據集導出到Stata(使用{foreign}包中的write.dta函數)時,變量標籤不會出現在Stata中。而是,變量名稱也會作爲變量標籤出現。該數據集包含這樣的變量:R到Stata:導出帶有變量標籤的數據框

X1 X2 X3

在Stata,我想爲變量有變量名稱本身相關的變量標籤:

X1「國家」 X2「PerCapitaIncome」 X3「Population」

當然,如果我可以在Stata中應用標籤而不是在R中應用標籤,但我試圖向僅使用R的研究員提供代碼。不幸的是,我需要將數據發送到數據存儲庫,這需要數據集文件格式在Stata中。

我試圖修改這裏提供的代碼:information from `label attribute` in R to `VARIABLE LABELS` in SPSS。它沒有工作。

我這是怎麼產生的變量標籤:

library(Hmisc) 
label(data[,1]) <- "State" 
label(data[,2]) <- "Per Capita Income" 
label(data[,3]) <- "Population" 

要導出到Stata的,我用這個:

library(foreign) 
write.dta(data,file="C:/Users/Me/Desktop/data.dta") 

基於其他職位,我想這使變量標籤「棒「:

df<-data 
get.var.labels <- function(data){ 
a<-do.call(llist,data) 
tempout<-vector("list",length(a)) 
for (i in 1:length(a)){ 
tempout[[i]]<-label(a[[i]]) 
} 
b<-unlist(tempout) 
structure(c(b),.Names=names(data)) 
} 
attributes(df)$variable.labels=get.var.labels(df) 

該代碼被寫入導出到SPSS,所以我沒有想到它的工作。儘管如此,我希望我可以找到類似的東西來爲Stata做同樣的事情。

任何幫助將不勝感激!

順便說一句,數據框確實有列名,但我希望它們對於數據管理的目的更具描述性。同時,我想保留原始列名(基本上是X1,X2,X3),這樣研究人員可以繼續以這種方式引用變量。 「

+7

贊同,但這實質上是「代碼我不顯示你不工作」。這將有助於看到一個簡單的可重複使用的示例,例如您在R中擁有的內容,導出它的方式以及它在Stata中的外觀。數據加代碼,請。 –

+0

如上所示 - 向我們展示「我使用Hmisc軟件包應用變量標籤」的含義。這是一個數據框?它沒有列名嗎?嘗試使用測試數據框或其他東西。否則,我們卡住了。 – Spacedman

回答

1

write.dta幫助頁面:」如果「val.labels」屬性包含一個帶有每個變量的字符串標籤的字符串向量,則將其寫爲變量標籤,否則變量名稱將作爲變量標籤重複。所以,我只是嘗試:

write.dta(data,file="C:/Users/Me/Desktop/data.dta", 
      val.labels=c("State", "Per Capita Income", "Population")) 
2

您可以使用該功能

write.dta

從包裝

國外

來處理這個問題。但首先,你必須將屬性添加到您的數據集是這樣的:

attr(data, "var.labels") <- c("State", "Per Capita Income","Population") 

然後導出數據集:

write.dta(data, file="mydata.dta") 

這就是它! 它適用於我,我希望它會成爲你的情況。

相關問題