楼主: lrwm85
9704 5

[编程问题求助] stata命令如何矩阵将某一行中0值全部转换为1 [推广有奖]

  • 19关注
  • 5粉丝

已卖:390份资源

教授

0%

还不是VIP/贵宾

-

威望
1
论坛币
8163 个
通用积分
1605.1775
学术水平
10 点
热心指数
10 点
信用等级
4 点
经验
14384 点
帖子
378
精华
0
在线时间
1191 小时
注册时间
2005-7-15
最后登录
2025-12-17

楼主
lrwm85 发表于 2014-4-12 14:29:12 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
比如矩阵mat a=(2,3,4,0,5\0,1,2,0,2)
我需要将a中第二行的的0一次性变为1
请问STATA命令如何操作?
二维码

扫码加我 拉你入群

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

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

关键词:stata命令 Stata tata 如何操作 一次性 如何

沙发
陈宝林 发表于 2014-4-12 17:52:51
  1. mat a=(2,3,4,0,5\0,1,2,0,2)
  2. mat list a
  3. forvalues  i=1/2{
  4. forvalues  j=1/5{
  5. scalar x=el(a,`i',`j')
  6. if (x==0){
  7. mat  a[`i',`j']=1
  8. }
  9. }
  10. }
  11. mat list a
复制代码
已有 3 人评分经验 学术水平 热心指数 信用等级 收起 理由
Sunknownay + 2 + 2 + 2 热心帮助其他会员
crystal8832 + 10 + 1 + 1 补偿
lrwm85 + 1 + 1 + 1 精彩帖子

总评分: 经验 + 10  学术水平 + 4  热心指数 + 4  信用等级 + 3   查看全部评分

藤椅
陈宝林 发表于 2014-4-12 17:57:36
这种功能Stata好像不自带,自己写也只能一个个遍历了。。。此代码的功能是将矩阵全部的0转换为1,如果只想要将某一行的0换为1(比如第二行),可以做如下修改:forvalues i=2/2,其余不变,对于列则修改 j 即可;
代码亲测无误

板凳
陈宝林 发表于 2014-4-12 18:06:47
其实吧,如果楼主知道矩阵和数据文件(一个个变量的那种)之间的转换,可以不用循环的;比如转化的数据文件变量为c1,c2,c3,c4,c5(如果你以列名为变量的话),那么将第一列的0转化为1的命令就是replace c1=1 if c1==0,然后再还原成矩阵即可。。。如果你能够想到这样做,说明你已经对Stata彻底入门了,因为Stata最大的特色是对变量的处理,比如可以直接对变量进行循环是其他软件难以做到的,目前我知道Stata比matlab强的也就这一点了。。。。
然,窃以为Stata处理矩阵确实不够专业,语法怪怪的,能不在stata中用矩阵的还是不要用吧。。。

报纸
lrwm85 发表于 2014-4-12 19:16:43
谢谢 数据已处理

地板
taichina 发表于 2016-7-16 21:12:54
谢谢分享~~

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-27 04:34