楼主: ermutuxia
6257 15

[其他] 如何把矩阵的某一行全部变成缺失值? [推广有奖]

小桥流水人家

已卖:116份资源

学术权威

65%

还不是VIP/贵宾

-

威望
3
论坛币
313334 个
通用积分
11560.5928
学术水平
702 点
热心指数
980 点
信用等级
309 点
经验
129190 点
帖子
9288
精华
1
在线时间
4176 小时
注册时间
2009-4-27
最后登录
2024-7-23

楼主
ermutuxia 发表于 2011-6-29 12:47:44 |AI写论文
30论坛币
我现在有一个30行4列的矩阵a,我知道如何把某个元素变为缺失值,比如说把第一行,第一列变为缺失值,则是matrix a[1,1]=.,但如果我想把矩阵a的第一行全部变为缺失值,请问如何实现?高手快来帮忙呀!

最佳答案

sungmoo 查看完整内容

*仅就此例 mat a=(J(1,4,.)\a[2..30,1...])
关键词:缺失值 matrix 如何实现 Mat 如何 matrix 元素

沙发
sungmoo 发表于 2011-6-29 12:47:45
ermutuxia 发表于 2011-6-29 12:47 我现在有一个30行4列的矩阵a,我知道如何把某个元素变为缺失值,比如说把第一行,第一列变为缺失值,则是matrix a[1,1]=.,但如果我想把矩阵a的第一行全部变为缺失值,请问如何实现?
*仅就此例

mat a=(J(1,4,.)\a[2..30,1...])
已有 4 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
ermutuxia + 100 + 1 + 1 + 1 谢谢sungmoo老师!
dxystata + 40 好的意见建议
h894510055 + 1 + 1 + 1 热心帮助其他会员
h3327156 + 1 + 1 + 1 高手!

总评分: 经验 + 100  论坛币 + 40  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

藤椅
floydgyf 在职认证  发表于 2011-6-29 12:54:54
既然整行不要,直接drop不完了?

板凳
关键先生alex 发表于 2011-6-29 13:01:31
matrix a[1,1]=[]

报纸
ermutuxia 发表于 2011-6-29 13:05:23
期待高手的回答呀!

地板
uixs23 发表于 2011-6-29 15:04:24
如2楼
可以 drop in N      /* N = line you want to drop out*/
或者 replace variablelist="." in N   /* N = line you want to replace by missing value*/

7
h3327156 发表于 2011-6-29 17:51:39
我使用一个笨方法,但这方法很简单,主要是原楼主本身就已经会单一某元素的缺失值指令,
这时,只要会简单的loop指令,套到该行的那些元素就好。
如何简洁地指定某行元素皆为missing value。我个人觉得很难,期待高手们的补充。
【Matlab或Gauss可能简单些,毕竟Stata在matrix或mata上显地比较谦虚】

matrix a=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30\1,2,3,4,5,6,7,8,9,10,11,12, 13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30\1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30\1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30)
matrix a[1,1]=.
forvalue i=2(1)4{
   matrix a[`i',1]=a[1,1]
}
matrix list a

参考看看
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
h894510055 + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

8
dxystata 发表于 2011-6-29 18:51:51
sungmoo 发表于 2011-6-29 18:29
ermutuxia 发表于 2011-6-29 12:47 我现在有一个30行4列的矩阵a,我知道如何把某个元素变为缺失值,比如说把第一行,第一列变为缺失值,则是matrix a[1,1]=.,但如果我想把矩阵a的第一行全部变为缺失值,请问如何实现?
*仅就此例

mat a=(J(1,4,.)\a[2..30,1...])
运行有问题

9
h3327156 发表于 2011-6-29 19:13:58
dxystata 发表于 2011-6-29 18:51
sungmoo 发表于 2011-6-29 18:29
ermutuxia 发表于 2011-6-29 12:47 我现在有一个30行4列的矩阵a,我知道如何把某个元素变为缺失值,比如说把第一行,第一列变为缺失值,则是matrix a[1,1]=.,但如果我想把矩阵a的第一行全部变为缺失值,请问如何实现?
*仅就此例

mat a=(J(1,4,.)\a[2..30,1...])
运行有问题
没有问题的,
sungmoo果然是高手,
我一直以为J还有..与...的概念是在mata上才能用,想不到能在一般matrix下也能运用。
另外,sungmoo的行列与我认知的行列有所不一样。

mat a=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30\1,2,3,4,5,6,7,8,9,10,11,12, 13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30\1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30\1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30)
mat b=(J(4,1,.),a[1...,2..30])
mat l b

这样运算出来即和我先前所举之结果就一样了! 果然是简洁派高手。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
h894510055 + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

10
sungmoo 发表于 2011-6-29 20:53:47
h3327156 发表于 2011-6-29 19:13
mat a=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30\1,2,3,4,5,6,7,8,9,10,11,12, 13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30\1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30\1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30)
这是“4行30列”吧?

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-20 17:57