2016-08-16 40 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