楼主: ermutuxia
9861 5

如何求一个矩阵的每一行的最大值,从而生成一个列向量? [推广有奖]

小桥流水人家

已卖:116份资源

学术权威

65%

还不是VIP/贵宾

-

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

楼主
ermutuxia 发表于 2011-6-30 10:42:58 |AI写论文
30论坛币
用什么函数求一个矩阵的每一行的最大值,从而生成一个列向量?比如说矩阵是 9行8列,那么生成的向量就应该是9行一列。高手快帮忙呀!

关键词:最大值 矩阵 向量 最大值

沙发
sungmoo 发表于 2011-6-30 13:36:37
ermutuxia 发表于 2011-6-30 10:42 用什么函数求一个矩阵的每一行的最大值,从而生成一个列向量?比如说矩阵是 9行8列,那么生成的向量就应该是9行一列。
*你接下来想用这个向量做什么呢?(另外,以后请勿叫“老师”)

*设x是Stata中的矩阵

*快速看到结果还要靠Mata:

mata
rowmax(st_matrix("
x"))
end

*Stata中的一个老办法:

mat m=J(9,1,.)
forv i=1/9{
loc max=x[`i',1]
forv j=2/8{
loc max=cond(x[`i',`j']>`max', x[`i',`j'], `max')
}
mat m[`i',1]=`max'
}
已有 3 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
chenvitor + 1 + 3 + 3 + 3 精彩帖子
ywh19860616 + 5 + 5 + 5 sungmoo版的思维能力太强啦,程序才能写的那.
dxystata + 20 好的意见建议

总评分: 论坛币 + 21  学术水平 + 8  热心指数 + 8  信用等级 + 8   查看全部评分

藤椅
ermutuxia 发表于 2011-6-30 14:01:50
对sungmoo老师的回复:
sungmoo老师,首先非常感谢sungmoo老师的回复,我是想根据几个变量生成一个新的变量,生成的方法就是哪个变量的取值大则新生成的那个变量就取哪个变量的值,每一条观测都是这样。因此我想把几个变量转化成一个矩阵,然后求矩阵每一行的最大值,生成一个列向量,再把新生成的向量转化为变量,这样我就实现了我的目的。我也不知道有没有什么更简单的方法。

板凳
sungmoo 发表于 2011-6-30 14:31:54
ermutuxia 发表于 2011-6-30 14:01 我是想根据几个变量生成一个新的变量,生成的方法就是哪个变量的取值大则新生成的那个变量就取哪个变量的值,每一条观测都是这样。因此我想把几个变量转化成一个矩阵,然后求矩阵每一行的最大值,生成一个列向量,再把新生成的向量转化为变量,这样我就实现了我的目的。我也不知道有没有什么更简单的方法。
********     x*是变量组

egen m=rowmax(x*)

报纸
sungmoo 发表于 2011-6-30 14:47:54
Stata中的基本数据形式有scalar、matrix(vector)、variable、macro(global、local)等。

Stata的强项是处理variable(而非matrix),它针对variable设计了大量的命令。习惯以矩阵为基本处理对象的使用者在Stata状态下若总想通过处理matrix来处理variable,则可能事倍功半(而忽略了Stata提供的功能)。

处理矩阵,最好使用Mata。Stata的matrix,维数受限制,且不能是字符型的。

地板
ermutuxia 发表于 2011-6-30 14:56:20
谢谢!非常感谢!

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

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