全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
9823 5
2011-06-30
悬赏 30 个论坛币 未解决
用什么函数求一个矩阵的每一行的最大值,从而生成一个列向量?比如说矩阵是 9行8列,那么生成的向量就应该是9行一列。高手快帮忙呀!
二维码

扫码加我 拉你入群

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

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

全部回复
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'
}
二维码

扫码加我 拉你入群

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

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

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

扫码加我 拉你入群

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

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

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

egen m=rowmax(x*)
二维码

扫码加我 拉你入群

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

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

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,维数受限制,且不能是字符型的。
二维码

扫码加我 拉你入群

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

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

2011-6-30 14:56:20
谢谢!非常感谢!
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群