楼主: 张群0703
12701 15

[问答] 将相关系数矩阵转换为列表的形式 [推广有奖]

  • 0关注
  • 2粉丝

本科生

43%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
99 点
帖子
73
精华
0
在线时间
62 小时
注册时间
2014-8-11
最后登录
2015-1-4

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大家好,我现在手里有一张相关系数矩阵的表,形式如下:
爱情传记盗窃动画动作
爱情

1

-0.10319

-0.02932

-0.12695

-0.20089

传记

-0.10319

1

-0.01

-0.05923

-0.0198

盗窃

-0.02932

-0.01

1

-0.01683

0.103494

动画

-0.12695

-0.05923

-0.01683

1

-0.13837

动作

-0.20089

-0.0198

0.103494

-0.13837

1

现在我想把这种相关系数矩阵转化为列表的形式,如:
爱情  传记 -0.10319
爱情   盗窃 -0.02932
.....
.....
这种,不知道有什么好的方法?
二维码

扫码加我 拉你入群

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

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

关键词:相关系数矩阵 相关系数 不知道 大家好 爱情 传记 动画

沙发
张群0703 发表于 2014-9-25 11:18:05 |只看作者 |坛友微信交流群
人工置顶
在线等

使用道具

藤椅
张群0703 发表于 2014-9-25 11:36:14 |只看作者 |坛友微信交流群
继续顶啊

使用道具

板凳
ziyenano 发表于 2014-9-25 12:42:15 |只看作者 |坛友微信交流群
a=cbind(c(1,-0.10319,-0.02932,-0.12695,-0.20089),
c(-0.10319,1,-0.01,-0.05923,-0.0198),
c(-0.02932,-0.01,1,-0.01683,0.103494),
c(-0.12695,-0.05923,-0.01683,1,-0.13837),
c(-0.20089,-0.0198,0.103494,-0.13837,1)
)
rownames(a)=c('爱情','传记','盗窃','动画','动作')
colnames(a)=c('爱情','传记','盗窃','动画','动作')

b=data.frame(name1=rep(rownames(a),each=dim(a)[1]),name2=rep(rownames(a),dim(a)[1]),value=matrix(a))

使用道具

报纸
张群0703 发表于 2014-9-25 13:47:29 |只看作者 |坛友微信交流群
ziyenano 发表于 2014-9-25 12:42
a=cbind(c(1,-0.10319,-0.02932,-0.12695,-0.20089),
c(-0.10319,1,-0.01,-0.05923,-0.0198),
c(-0.02932 ...
我这个截图只是截取了一部分,总共有34个变量,这样要把34个变量两两相关系数都手动输入进去吗?这样工作量太大了呀,如果以后变量数变成100多个,怎么把啊?

使用道具

地板
yywan0913 在职认证  发表于 2014-9-25 14:02:19 |只看作者 |坛友微信交流群
张群0703 发表于 2014-9-25 13:47
我这个截图只是截取了一部分,总共有34个变量,这样要把34个变量两两相关系数都手动输入进去吗?这样工作 ...
感觉你这做的是别人的反工作。
楼上的代码主要是最后一句。
另外还是推荐melt函数吧
  1. library(reshape2)
  2. melt(data,value.name="value")
复制代码

使用道具

7
ziyenano 发表于 2014-9-25 14:08:00 |只看作者 |坛友微信交流群
张群0703 发表于 2014-9-25 13:47
我这个截图只是截取了一部分,总共有34个变量,这样要把34个变量两两相关系数都手动输入进去吗?这样工作 ...
数据直接导入就行了,我前面的代码只是生成一个样本数据

使用道具

8
张群0703 发表于 2014-9-25 15:01:24 |只看作者 |坛友微信交流群
ziyenano 发表于 2014-9-25 14:08
数据直接导入就行了,我前面的代码只是生成一个样本数据
按照您的方法做了一下,我想把b导出了,用了write.table()结果显示出错,
错误于.External2(C_writetable, x, file, nrow(x), p, rnames, sep, eol,  :
  种类'list'目前没有在'EncodeElement'里实现
这是怎么回事啊?
我刚接触R,还有很多不明白

使用道具

9
ziyenano 发表于 2014-9-25 16:07:48 |只看作者 |坛友微信交流群
张群0703 发表于 2014-9-25 15:01
按照您的方法做了一下,我想把b导出了,用了write.table()结果显示出错,
错误于.External2(C_writetabl ...
你传点数据上来

使用道具

10
张群0703 发表于 2014-9-25 17:23:40 |只看作者 |坛友微信交流群
ziyenano 发表于 2014-9-25 16:07
你传点数据上来
已经解决了,谢谢您~~~

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-28 14:20