2014-03-12 69 views
-1

我從未使用過Stata,對此知之甚少。根據year,country1,country2,我一直試圖摺疊雙邊信息的數據集,並採取所有其他信息的手段。在R,我試圖運行:在Stata中使用整數和字符串進行數據子集與R

aggregate(dataset,by=list(dataset$year,dataset$country1,dataset$country2),FUN=mean,na.rm=TRUE) 

數據集是太大,我計算機的RAM來處理我崩潰的R(另一個問題我解決不了),當一個同事試圖運行代碼,其他數據沒有被顯示爲手段(在某些情況下,只有一個特定二進制年的一行中的數據被選中;在其他情況下,我甚至不知道發生了什麼)。數據集的較小子集顯示正確的結果。

因爲在R上的問題,我想嘗試在Stata這樣做,但從前我以前使用

collapse (mean) <every variable I wanted a ``mean'' of, or otherwise wanted to remove from the dataset>, by(year country1 country2) 

塔塔不知道如何處理字符串的嘗試。我對Stata瞭解甚少,我無法弄清楚如何解決這個問題。有人能給我提供代碼,我需要使用collapse命令來處理大量變量,其中很多變量都是字符串(並且對於字符串,我希望返回NA)?

+0

您是否有可分享的數據樣本?那麼你可以粘貼dput的輸出(data [sample(1:nrow(data),50)]?我懷疑發生了什麼事是你的數據混合了字符和數字變量,並且你將它們聚合在一起你的調用 – infominer

+0

那麼,輸出是99個變量,我會試試看 – ironchefsakai

+0

這對於通過R訪問的SQLite來說似乎是一個很好的用例,可能是'dplyr'作爲前端,或者'data.table 「如果數據適合內存,甚至可能工作,但崩潰操作佔用太多空間。 –

回答

1

如果您試圖計算平均值的字符串變量是被視爲字符串的數字,例如, 「1」,「2」等,則可以使用real()destring將變量轉換爲數字類型。不是這種形式的字符串變量,例如如果沒有包含在collapse中,那麼「鱷魚」,「蜥蜴」,「蛇」等將不會被刪除。

例子:

clear all 
set more off 

* some example data 
input /// 
str4 numstr num str11 reptiles 
"234" 234 "alligator" 
"2135" 2135 "lizard" 
"324" 324 "snake" 
end 

list 

* create numeric variable from string 
destring(numstr), gen(num2) 

* the collapse 
collapse (mean) num num2 

list 
2

您可以選擇數值變量與ds自動。 ds是一個官方命令。 findnameStata Journal)是用戶編寫的ds的繼承者,具有更多功能(事實)和更友好的語法(作者的觀點,儘管同一作者是ds的最後作者)。

. sysuse auto 
(1978 Automobile Data) 

. ds, has(type numeric) 
price   rep78   trunk   length  displacement foreign 
mpg   headroom  weight  turn   gear_ratio 

. findname, type(numeric) 
price   rep78   trunk   length  displacement foreign 
mpg   headroom  weight  turn   gear_ratio 

在這兩種情況下,你會發現,數字變量的名稱在r(varlist)返回:

. di "`r(varlist)'" 
price mpg rep78 headroom trunk weight length turn displacement gear_ratio foreign 

,讓你養活,要collapse

. collapse `r(varlist)', by(year country1 country2) 

一般來說,不能替代閱讀collapse的幫助和手動輸入。

相關問題