gpt4 book ai didi

mysql - 如何在 Stata 中按语句(来自 MySQL)进行分组?

转载 作者:行者123 更新时间:2023-11-29 02:34:35 26 4
gpt4 key购买 nike

我不是统计人员,但必须处理相当多的数据。在大多数情况下,这些数据集来自在线调查;因此我有一个 MySQL 数据库,并且知道如何从中获取一些结果。

但是,现在我得到了一个Stata文件,我需要做一些分析。在 MySQL 中我知道如何做到这一点,但我被困在 Stata 中并寻求你的帮助。

我有一个不太小的表(大约 50k 行),其中包含以下列(还有更多列,但这些是我必须使用的列):

id - 对象 ID,唯一值

name - 对象名称,字符串值

class - 对象的类,整数范围 1 - 6

origin - 物体的起源,整数范围 1 - 2

在 5 万行中,只有大约 7 千个不同的名称。在 Stata 中,我可以使用 list name 检索所有名称,甚至可以使用 list name if class == 2 将其限制为单个类。

现在我想要一个包含所有不同名称的列表以及具有该名称的对象的计数并按计数对列表进行排序。在 MySQL 中,我将查询 SELECT name, COUNT(*) AS cnt FROM objects GROUP BY name ORDER BY cnt DESC但在 Stata 中如何完成?

接下来的步骤是为每个类或两个来源获取此类列表,即 SELECT name, COUNT(*) AS cnt FROM objects WHERE class = 2 GROUP BY name ORDER BY cnt DESC, Stata 也可以吗?

ps:我不知道 stackoverflow 是否是正确的地方,因为 Stata 并不是真正的编程语言,是吗?但是我在这里发现了一些Stata相关的问题;这就是为什么我把它贴在这里。如果有更好的地方可以这样做,请指出正确的地方。

最佳答案

请记住,Stata 仅适用于固定长度的矩形表格,因此您只能添加跨越整个 50k 行的列。在此设置中,这就是您可以执行的操作。

对于第一个问题(名字和频率的列表),你可以

   collapse (count) freq = name, by(class)
sort class freq name
list class name freq, sepby(class)

请注意,collapse 将删除现有数据并替换为摘要。 (通常,我讨厌这个命令用于数据管理的这个方面,但它应该在这里工作。)如果你不希望这种情况发生,这里有一个更复杂的技巧:

   bysort class name : generate long freq = _N
bysort class name : generate byte first = (_n==1)
sort class freq name
list class name freq if first, sepby(class)

(说明:_Nby-group中的观察个数,_n中当前观察的个数code>by-group.)

然后,您可以使用 if class==# 将其子集化为感兴趣的类,正如您已经知道的那样。

关于mysql - 如何在 Stata 中按语句(来自 MySQL)进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7263114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com