楼主: M1tty
541 2

[数据管理求助] 如何求多个相似变量之间横向的累积百分比,并保存为新的变量进行后续计算? [推广有奖]

  • 0关注
  • 0粉丝

高中生

22%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
126 点
帖子
4
精华
0
在线时间
46 小时
注册时间
2022-2-18
最后登录
2024-5-28

楼主
M1tty 发表于 2023-4-6 14:51:59 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
有一份数据,其中五个变量是关于同一个问题(如:子女1-子女5对受访者的经济支持)所得到的定序数据,取值区间在[1,9],如果我想计算对于同一个受访者而言,这var1-var5的取值的每个类别的累积百分比,可能的取值情况有(1,1,1,1,1),(1,2,3,4,5),(2,3,4,.,.)等等(考虑有部分缺失值的情况),并想代入下式进行计算:
\[l^{2}=\frac{\sum_{i=1}^{k}\left ( F_{i}-0.5\right )^{2}}{\left ( k-1 \right )/4}\]
其中Fi即是每个类别的累积百分比,k为取值类别数。
应该如何在stata中实现?主要的困难在于,需要针对每一个id计算多个累积百分比的值并将其存储为新变量进行后续计算?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:百分比 RIGHT LaTeX Stata left

沙发
Markqb 发表于 2023-4-6 18:12:03
你需要创建一个新变量,用于存储每个id的累积百分比值。假设你将该变量命名为"cum_percent",可以使用以下命令创建:
gen cum_percent = .
然后,你可以使用以下命令计算每个id的每个变量的累积百分比值:
by id: egen cum_percent_var1 = pctile(var1), p(1/9)
by id: egen cum_percent_var2 = pctile(var2), p(1/9)
by id: egen cum_percent_var3 = pctile(var3), p(1/9)
by id: egen cum_percent_var4 = pctile(var4), p(1/9)
by id: egen cum_percent_var5 = pctile(var5), p(1/9)

这将计算出每个id的每个变量的每个取值的累积百分比值,并将其存储在以"cum_percent"开头的新变量中(例如"cum_percent_var1"表示变量var1的累积百分比值)。

最后,你可以使用以下命令计算每个类别的累积百分比值:
egen cum_percent_1_1_1_1_1 = rowtotal(cum_percent_var1==1 & cum_percent_var2==1 & cum_percent_var3==1 & cum_percent_var4==1 & cum_percent_var5==1)
egen cum_percent_1_2_3_4_5 = rowtotal(cum_percent_var1==1 & cum_percent_var2==2 & cum_percent_var3==3 & cum_percent_var4==4 & cum_percent_var5==5)
egen cum_percent_2_3_4 = rowtotal(cum_percent_var1==2 & cum_percent_var2==3 & cum_percent_var3==4 & missing(cum_percent_var4, cum_percent_var5))

其中,"cum_percent_1_1_1_1_1"表示取值为(1,1,1,1,1)的累积百分比值,"cum_percent_1_2_3_4_5"表示取值为(1,2,3,4,5)的累积百分比值,"cum_percent_2_3_4"表示取值为(2,3,4,.,.)的累积百分比值。

这些命令将计算出每个类别的累积百分比值,并将其存储在以"cum_percent_"开头的新变量中。

藤椅
刘七 发表于 2023-4-15 11:23:52
近期碰到类似问题,尝试给出一些看法:
楼主的问题,是“横向数据如何按照ID分类并且加总”,同时希望生成一个新变量来储存加总后的数据。
因为没有给出数据集的结构,所以无法直接给出命令,但是建议可以从以下几个方向尝试:
1、选择适合的加总命令。你要了解命令的适用范围,从而选择满足自己需要的命令。比如,你要知道,count命令是用于计数,并不是对变量取值进行加总;rowtotal是按行对变量值进行加总,它可以和egen命令进行配合,生成一个新变量储存加总后的数据结果。
2、选择合适的变量来生成新变量储存加总后的数据。你需要细致检查如gen、egen命令的适用规则以及限制。比如,你的需求有一条是要按照ID进行分类加总,那么rowtotal和egen命令的配合可能有助于实现,但是逻辑前提是,你每一行的数据默认是以ID进行分类的。
3、如果可以,配合适当的循环语句,以简化重复劳动。如,使用foreach的变量名循环来实现目的。
希望能有帮助,欢迎交流!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-8 05:09