2016-08-16 41 views
0

我在最後提供了一個簡單版本的數據集。如何將包含多個變量的列轉換爲單獨的變量列

給定一個時間,我有九個不同主題的每個活動值。 我想實現這一主題列轉化爲9個新的變量,例如,我有以下結構:

時間,活動,主題1,主題2,...,主題9

在哪裏主題變量包含值的相應條目。

所以在最後我希望有時間的每一個點,8個活動和

Time | ACTIVITY | Subject1 | Subject2 | ... | Subject9 
    -----| ---------|----------|----------|-----|---------- 
    1995 | A  | example | example |  | example 
    1995 | F  | example | example |  | example 
    1995 | K  | example | example |  | example 
    1995 | J  | example | example |  | example 

...

我已經嘗試過了reshape命令, reshape wide ACTIVITY, i(Value) j(Subject) string但我懷疑reshape isn'在這裏輸入正確的命令來獲得我想要的結果。

clear 
input int Time str55 Subject str3 ACTIVITY str18 Value 
1995 "Average hours worked per person employed"    "A" "-2.426848"   
1995 "Gross value added per hour worked, constant prices"  "A" "19.235807"   
1995 "Gross value added per person employed, constant prices " "A" "16.342135"   
1995 "Labour compensation per employee "      "A" "-8.435628"   
1995 "Labour compensation per hour worked"      "A" "-7.921433"   
1995 "Total employment (number of persons employed)"   "A" "4.14512"   
1995 "Total hours worked"          "A" "1.617676"   
1995 "Unit Labour Costs"          "A" "-22.776078"   
1995 "Unit Labour Costs, employment based "     "A" "-21.297326"   
1995 "Average hours worked per person employed"    "F" "-1.653278"   
1995 "Gross value added per hour worked, constant prices"  "F" "1.703939"   
1995 "Gross value added per person employed, constant prices " "F" ".02249"    
1995 "Labour compensation per employee "      "F" "2.544764"   
1995 "Labour compensation per hour worked"      "F" "3.459858"   
1995 "Total employment (number of persons employed)"   "F" "1.784137"   
1995 "Total hours worked"          "F" ".101362"   
1995 "Unit Labour Costs"          "F" "1.726501"   
1995 "Unit Labour Costs, employment based "     "F" "2.521708"   
1995 "Average hours worked per person employed"    "K" "1.694564"   
1995 "Gross value added per hour worked, constant prices"  "K" "1.221264"   
1995 "Gross value added per person employed, constant prices " "K" "2.936522"   
1995 "Labour compensation per employee "      "K" "9.752344000000001" 
1995 "Labour compensation per hour worked"      "K" "7.939534"   
1995 "Total employment (number of persons employed)"   "K" "1.113274"   
1995 "Total hours worked"          "K" "2.826703"   
1995 "Unit Labour Costs"          "K" "6.637213"   
1995 "Unit Labour Costs, employment based "     "K" "6.621383"   
1995 "Average hours worked per person employed"    "J" "1.271221"   
1995 "Gross value added per hour worked, constant prices"  "J" ".416748"   
1995 "Gross value added per person employed, constant prices " "J" "1.693267"   
1995 "Labour compensation per employee "      "J" "6.733944"   
1995 "Labour compensation per hour worked"      "J" "4.750437"   
1995 "Total employment (number of persons employed)"   "J" "3.961272"   
1995 "Total hours worked"          "J" "5.28285"   
1995 "Unit Labour Costs"          "J" "4.315704"   
1995 "Unit Labour Costs, employment based "     "J" "4.956746"   
1995 "Average hours worked per person employed"    "C" "-.961265"   
1995 "Gross value added per hour worked, constant prices"  "C" "3.918341"   
1995 "Gross value added per person employed, constant prices " "C" "2.919411"   
1995 "Labour compensation per employee "      "C" "9.327536"   
1995 "Labour compensation per hour worked"      "C" "10.142572"   
1995 "Total employment (number of persons employed)"   "C" "-.615951"   
1995 "Total hours worked"          "C" "-1.571295"   
1995 "Unit Labour Costs"          "C" "5.989541"   
1995 "Unit Labour Costs, employment based "     "C" "6.226353"   
1995 "Average hours worked per person employed"    "BDE" ".052094"   
1995 "Gross value added per hour worked, constant prices"  "BDE" "9.885144"   
1995 "Gross value added per person employed, constant prices " "BDE" "9.942387"   
1995 "Labour compensation per employee "      "BDE" "13.808441"   
1995 "Labour compensation per hour worked"      "BDE" "12.406663"   
1995 "Total employment (number of persons employed)"   "BDE" "-3.86639"   
1995 "Total hours worked"          "BDE" "-3.81631"   
1995 "Unit Labour Costs"          "BDE" "2.294686"   
1995 "Unit Labour Costs, employment based "     "BDE" "3.516435"   
1995 "Average hours worked per person employed"    "MN" ".131723"   
1995 "Gross value added per hour worked, constant prices"  "MN" "-6.173118"   
1995 "Gross value added per person employed, constant prices " "MN" "-6.049526"   
1995 "Labour compensation per employee "      "MN" ".8593380000000001" 
1995 "Labour compensation per hour worked"      "MN" ".451672"   
1995 "Total employment (number of persons employed)"   "MN" "7.730918"   
1995 "Total hours worked"          "MN" "7.872824"   
1995 "Unit Labour Costs"          "MN" "7.060652"   
1995 "Unit Labour Costs, employment based "     "MN" "7.35373"   
1995 "Average hours worked per person employed"    "G_I" "-1.07602"   
1995 "Gross value added per hour worked, constant prices"  "G_I" "4.234882"   
1995 "Gross value added per person employed, constant prices " "G_I" "3.113293"   
1995 "Labour compensation per employee "      "G_I" "3.355356"   
1995 "Labour compensation per hour worked"      "G_I" "3.935881"   
1995 "Total employment (number of persons employed)"   "G_I" "2.40757"   
1995 "Total hours worked"          "G_I" "1.305644"   
1995 "Unit Labour Costs"          "G_I" "-.286853"   
1995 "Unit Labour Costs, employment based "     "G_I" ".234754"   
1996 "Average hours worked per person employed"    "A" "2.25265"   
1996 "Gross value added per hour worked, constant prices"  "A" "5.369203"   
1996 "Gross value added per person employed, constant prices " "A" "7.742802"   
1996 "Labour compensation per employee "      "A" "10.454575"   
1996 "Labour compensation per hour worked"      "A" "5.366434"   
1996 "Total employment (number of persons employed)"   "A" ".451591"   
1996 "Total hours worked"          "A" "2.714414"   
1996 "Unit Labour Costs"          "A" "-.002628"   
1996 "Unit Labour Costs, employment based "     "A" "2.516895"   
1996 "Average hours worked per person employed"    "F" "1.728397"   
1996 "Gross value added per hour worked, constant prices"  "F" "3.759875"   
1996 "Gross value added per person employed, constant prices " "F" "5.553258"   
1996 "Labour compensation per employee "      "F" "5.375732"   
1996 "Labour compensation per hour worked"      "F" "1.426935"   
1996 "Total employment (number of persons employed)"   "F" "-2.600872"   
1996 "Total hours worked"          "F" "-.9174290000000001" 
1996 "Unit Labour Costs"          "F" "-2.248403"   
1996 "Unit Labour Costs, employment based "     "F" "-.168186"   
1996 "Average hours worked per person employed"    "K" "-.480611"   
1996 "Gross value added per hour worked, constant prices"  "K" "7.184181"   
1996 "Gross value added per person employed, constant prices " "K" "6.669043"   
1996 "Labour compensation per employee "      "K" "7.474571"   
1996 "Labour compensation per hour worked"      "K" "7.808084"   
1996 "Total employment (number of persons employed)"   "K" ".219797"   
1996 "Total hours worked"          "K" "-.26187"   
1996 "Unit Labour Costs"          "K" ".582085"   
1996 "Unit Labour Costs, employment based "     "K" ".755166"   
1996 "Average hours worked per person employed"    "J" "1.146989"   
1996 "Gross value added per hour worked, constant prices"  "J" "2.294382"   
1996 "Gross value added per person employed, constant prices " "J" "3.467687"   
1996 "Labour compensation per employee "      "J" "-.888716"   
1996 "Labour compensation per hour worked"      "J" "-1.391543"   
1996 "Total employment (number of persons employed)"   "J" "3.804509"   
1996 "Total hours worked"          "J" "4.995135"   
1996 "Unit Labour Costs"          "J" "-3.603252"   
1996 "Unit Labour Costs, employment based "     "J" "-4.2104"   
1996 "Average hours worked per person employed"    "C" ".127422"   
1996 "Gross value added per hour worked, constant prices"  "C" ".390807"   
1996 "Gross value added per person employed, constant prices " "C" ".5187270000000001" 
1996 "Labour compensation per employee "      "C" "-.219582"   
1996 "Labour compensation per hour worked"      "C" "-.44278"   
1996 "Total employment (number of persons employed)"   "C" "1.171237"   
1996 "Total hours worked"          "C" "1.300151"   
1996 "Unit Labour Costs"          "C" "-.830342"   
1996 "Unit Labour Costs, employment based "     "C" "-.734499"   
1996 "Average hours worked per person employed"    "BDE" "-.10856"   
1996 "Gross value added per hour worked, constant prices"  "BDE" "8.380025"   
1996 "Gross value added per person employed, constant prices " "BDE" "8.262368"   
1996 "Labour compensation per employee "      "BDE" "6.231358"   
1996 "Labour compensation per hour worked"      "BDE" "7.102013"   
1996 "Total employment (number of persons employed)"   "BDE" "-7.014769"   
1996 "Total hours worked"          "BDE" "-7.115713"   
1996 "Unit Labour Costs"          "BDE" "-1.179195"   
1996 "Unit Labour Costs, employment based "     "BDE" "-1.876007"   
1996 "Average hours worked per person employed"    "MN" "-.353884"   
1996 "Gross value added per hour worked, constant prices"  "MN" "1.076035"   
1996 "Gross value added per person employed, constant prices " "MN" ".718343"   
1996 "Labour compensation per employee "      "MN" "1.12435"   
1996 "Labour compensation per hour worked"      "MN" "1.117737"   
1996 "Total employment (number of persons employed)"   "MN" "3.155591"   
1996 "Total hours worked"          "MN" "2.790539"   
1996 "Unit Labour Costs"          "MN" ".041258"   
1996 "Unit Labour Costs, employment based "     "MN" ".403111"   
1996 "Average hours worked per person employed"    "G_I" "-.798141"   
1996 "Gross value added per hour worked, constant prices"  "G_I" "4.965412"   
1996 "Gross value added per person employed, constant prices " "G_I" "4.127639"   
1996 "Labour compensation per employee "      "G_I" "10.194463"   
1996 "Labour compensation per hour worked"      "G_I" "10.477853"   
1996 "Total employment (number of persons employed)"   "G_I" ".885576"   
1996 "Total hours worked"          "G_I" ".080367"   
1996 "Unit Labour Costs"          "G_I" "5.251674"   
1996 "Unit Labour Costs, employment based "     "G_I" "5.826333"   
1997 "Average hours worked per person employed"    "A" ".731776"   
1997 "Gross value added per hour worked, constant prices"  "A" "-3.186056"   
1997 "Gross value added per person employed, constant prices " "A" "-2.477594"   
1997 "Labour compensation per employee "      "A" "-5.06916"   
1997 "Labour compensation per hour worked"      "A" "-6.890363"   
1997 "Total employment (number of persons employed)"   "A" "2.698438"   
1997 "Total hours worked"          "A" "3.44996"   
1997 "Unit Labour Costs"          "A" "-3.826213"   
1997 "Unit Labour Costs, employment based "     "A" "-2.657405"   
1997 "Average hours worked per person employed"    "F" "2.117396"   
1997 "Gross value added per hour worked, constant prices"  "F" "5.906121"   
1997 "Gross value added per person employed, constant prices " "F" "8.148573000000001" 
1997 "Labour compensation per employee "      "F" "1.279112"   
1997 "Labour compensation per hour worked"      "F" "1.322872"   
1997 "Total employment (number of persons employed)"   "F" "1.8041"    
1997 "Total hours worked"          "F" "3.959696"   
1997 "Unit Labour Costs"          "F" "-4.327652"   
1997 "Unit Labour Costs, employment based "     "F" "-6.351874"   
1997 "Average hours worked per person employed"    "K" ".43239"    
1997 "Gross value added per hour worked, constant prices"  "K" "8.700056999999999" 
1997 "Gross value added per person employed, constant prices " "K" "9.170064999999999" 
1997 "Labour compensation per employee "      "K" "11.205117"   
1997 "Labour compensation per hour worked"      "K" "11.399443"   
1997 "Total employment (number of persons employed)"   "K" "-1.822407"   
1997 "Total hours worked"          "K" "-1.397898"   
1997 "Unit Labour Costs"          "K" "2.483335"   
1997 "Unit Labour Costs, employment based "     "K" "1.864112"   
1997 "Average hours worked per person employed"    "J" "-3.236768"   
1997 "Gross value added per hour worked, constant prices"  "J" "21.34373"   
1997 "Gross value added per person employed, constant prices " "J" "17.416115"   
1997 "Labour compensation per employee "      "J" "14.072785"   
1997 "Labour compensation per hour worked"      "J" "18.627454"   
1997 "Total employment (number of persons employed)"   "J" "-7.862875"   
1997 "Total hours worked"          "J" "-10.84514"   
1997 "Unit Labour Costs"          "J" "-2.238497"   
1997 "Unit Labour Costs, employment based "     "J" "-2.84742"   
1997 "Average hours worked per person employed"    "C" ".198729"   
1997 "Gross value added per hour worked, constant prices"  "C" "3.620337"   
1997 "Gross value added per person employed, constant prices " "C" "3.826261"   
1997 "Labour compensation per employee "      "C" "4.423006"   
1997 "Labour compensation per hour worked"      "C" "4.697621"   
1997 "Total employment (number of persons employed)"   "C" "-.840977"   
1997 "Total hours worked"          "C" "-.643919"   
1997 "Unit Labour Costs"          "C" "1.039645"   
1997 "Unit Labour Costs, employment based "     "C" ".574753"   
1997 "Average hours worked per person employed"    "BDE" "1.753725"   
1997 "Gross value added per hour worked, constant prices"  "BDE" "4.57343"   
1997 "Gross value added per person employed, constant prices " "BDE" "6.40736"   
1997 "Labour compensation per employee "      "BDE" ".474943"   
1997 "Labour compensation per hour worked"      "BDE" "-.653428"   
1997 "Total employment (number of persons employed)"   "BDE" "-2.690283"   
1997 "Total hours worked"          "BDE" "-.983739"   
1997 "Unit Labour Costs"          "BDE" "-4.998266"   
1997 "Unit Labour Costs, employment based "     "BDE" "-5.575195"   
1997 "Average hours worked per person employed"    "MN" ".420778"   
1997 "Gross value added per hour worked, constant prices"  "MN" "-1.055989"   
1997 "Gross value added per person employed, constant prices " "MN" "-.639655"   
1997 "Labour compensation per employee "      "MN" "5.067928"   
1997 "Labour compensation per hour worked"      "MN" "4.630638"   
1997 "Total employment (number of persons employed)"   "MN" "7.493905"   
1997 "Total hours worked"          "MN" "7.946215"   
1997 "Unit Labour Costs"          "MN" "5.747318"   
1997 "Unit Labour Costs, employment based "     "MN" "5.744327"   
1997 "Average hours worked per person employed"    "G_I" ".532551"   
1997 "Gross value added per hour worked, constant prices"  "G_I" "3.058326"   
1997 "Gross value added per person employed, constant prices " "G_I" "3.607164"   
1997 "Labour compensation per employee "      "G_I" "2.245979"   
1997 "Labour compensation per hour worked"      "G_I" "2.114407"   
1997 "Total employment (number of persons employed)"   "G_I" ".621482"   
1997 "Total hours worked"          "G_I" "1.157342"   
1997 "Unit Labour Costs"          "G_I" "-.9159080000000001" 
1997 "Unit Labour Costs, employment based "     "G_I" "-1.313795"   
end 
+0

屏幕截圖的使用非常有限:讀者在屏幕截圖和問題之間來回切換,無法複製並粘貼到他們的Stata中。請發佈一個明確的數據示例。 'dataex'(SSC;使用'ssc inst dataex'安裝)將有所幫助。我們不能評論你的'reshape'命令,因爲你沒有給出代碼。請研究http://stackoverflow.com/help/mcve –

+0

感謝您的編輯。這些數據的'reshape'命令是錯誤的。請參閱下面的答案。 –

回答

0

在Stata中,列是矩陣的列。你所稱的列是變量

你的屏幕截圖顯示了以下幾個問題:

  1. Time變量和Value變量是字符串。這看起來不對。這些變量中可能存在某些垃圾。也許標題已被複制到數據中。 list Time if missing(real(Time))是一種會顯示非數字值的命令。

  2. 您的Subject變量顯示尾隨空格。如果不一致,可能會導致問題。

  3. 您的Subject變量的不同值不能是給定嵌入空格的變量名稱的一部分。所以,我們需要一些額外的工作。

此代碼生成一個玩具的例子,並展示一些技巧。與你的猜測相反,reshape是首選命令。

clear 
set obs 6 
gen location = "AUS" 
gen time = 1995 
gen subject = cond(mod(_n, 2), "Fooling around ", " Wasting time") 
gen activity = word("A F K", ceil(_n/2)) 
gen value = _n 
replace subject = trim(subject) 
list 

    +-----------------------------------------------------+ 
    | location time   subject activity value | 
    |-----------------------------------------------------| 
    1. |  AUS 1995 Fooling around   A  1 | 
    2. |  AUS 1995  Wasting time   A  2 | 
    3. |  AUS 1995 Fooling around   F  3 | 
    4. |  AUS 1995  Wasting time   F  4 | 
    5. |  AUS 1995 Fooling around   K  5 | 
    |-----------------------------------------------------| 
    6. |  AUS 1995  Wasting time   K  6 | 
    +-----------------------------------------------------+ 


egen group = group(subject), label 
su group, meanonly 
local gmax = r(max) 
forval g = 1/`gmax' { 
    local lbl`g' "`: label (group) `g''" 
} 
drop subject 

reshape wide value, i(location time activity) j(group) 

forval g = 1/`gmax' { 
    label var value`g' "`lbl`g''" 
} 
list 

    +----------------------------------------------+ 
    | location time activity value1 value2 | 
    |----------------------------------------------| 
    1. |  AUS 1995   A  1  2 | 
    2. |  AUS 1995   F  3  4 | 
    3. |  AUS 1995   K  5  6 | 
    +----------------------------------------------+ 

describe 


Contains data 
    obs:    3       
vars:    5       
size:   60 (99.9% of memory free) 
-------------------------------------------------------------------------------- 
       storage display  value 
variable name type format  label  variable label 
-------------------------------------------------------------------------------- 
location  str3 %9s      
time   float %9.0g     
activity  str1 %9s      
value1   float %9.0g     Fooling around 
value2   float %9.0g     Wasting time 
-------------------------------------------------------------------------------- 
Sorted by: location time activity