【问题标题】:Equivalent of Excel Pivoting in Stata相当于Stata中的Excel透视
【发布时间】:2020-04-21 02:45:08
【问题描述】:

我一直在使用 Stata 中需要重塑的国家级调查数据。我最终将 .dta 导出到 .csv 并在 Excel 中制作了一个数据透视表,但我很想知道如何在 Stata 中执行此操作,因为我无法弄清楚。

假设我们有以下数据:

country response
A 1
A 1
A 2
A 2
A 1
B 1
B 2
B 2
B 1
B 1
A 2
A 2
A 1

我希望将数据重新格式化为:

country sum_1 sum_2
A 4 4
B 3 2

首先我尝试了一个简单的reshape wide 命令,但在意识到reshape 没有额外步骤之前得到了错误“变量响应的值在国家/地区内不是唯一的”。 p>

然后我尝试根据response 的值生成新变量,然后尝试使用reshape……整个事情变得一团糟,所以我只使用了 Excel。

只是好奇是否有更直观的方式来进行这种转换。

【问题讨论】:

  • 每当看到“直觉”这个词,我只能翻译为“熟悉”。我从未在 MS Excel 中使用过数据透视表,所以不知道我的答案与您的期望有多接近。
  • 这是正确的,谢谢。我需要将其合并到更大的数据集,因此将其制成表格是不够的。当然,你的直觉是对的,这实际上比学习枢轴函数要容易得多!

标签: pivot-table stata reshape


【解决方案1】:

如果你只是想要一张桌子,那么就随便找一张吧:

clear 
input str1 country response
A 1
A 1
A 2
A 2
A 1
B 1
B 2
B 2
B 1
B 1
A 2
A 2
A 1
end 

tabulate country response 

           |       response
   country |         1          2 |     Total
-----------+----------------------+----------
         A |         4          4 |         8 
         B |         3          2 |         5 
-----------+----------------------+----------
     Total |         7          6 |        13 

如果您希望将数据更改为此,reshape 是答案的一部分,但您应该首先contractcollapse 在几个方面更通用,但你的“总和”实际上是一个计数或频率,所以contract 更直接。

contract country response, freq(sum_)

reshape wide sum_, i(country) j(response)

list 

     +-------------------------+
     | country   sum_1   sum_2 |
     |-------------------------|
  1. |       A       4       4 |
  2. |       B       3       2 |
     +-------------------------+

在 Stata 16 up 中,help frames 引入了帧作为在同一会话中处理多个数据集的一种方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    相关资源
    最近更新 更多