楼主: anchu
1311 8

[问答] R语言矩阵问题 [推广有奖]

  • 1关注
  • 1粉丝

硕士生

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2164 点
帖子
106
精华
0
在线时间
162 小时
注册时间
2015-9-13
最后登录
2020-7-25

楼主
anchu 在职认证  发表于 2016-5-18 21:45:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我现在有个9X2的矩阵,如,
genesymbol       miRNA name
1   gene1                 miRNA1   
2   gene1                 miRNA2
3   gene1                 miRNA3
4   gene2                 miRNA4
5   gene2                 miRNA1
6   gene2                 miRNA3
7   gene3                 miRNA4
8   gene3                 miRNA1
9   gene3                 miRNA2

我想生成矩阵为:
          miRNA1   miRNA2   miRNA3   miRNA4
gene1     1             1             1             0
gene2     1             0             1             1
gene3     1             1             0             1


请大牛指教,谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:R语言 symbol genes name MBO

回帖推荐

jiangbeilu 发表于7楼  查看完整内容

上面的问题,其实reshape包也可以解决,我相信bbslover的方法是对的,你需要自己去领悟。 我这里给出我的代码:

沙发
bbslover 在职认证  发表于 2016-5-18 22:13:15
先增加一列·1·在最后边,列名·value·,然后使用reshape2包来进行格式操作:你的情况是:length -> width

大概过程如下,可能有点小出入:
library(reshape2)
data_wide <- dcast(long_format, genesymbol ~ miRNAName, value.var="value")
data_wide

你google一下会有例子:reshape2 convert length to width
已有 1 人评分论坛币 收起 理由
jiangbeilu + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

藤椅
anchu 在职认证  发表于 2016-5-19 09:44:56
bbslover 发表于 2016-5-18 22:13
先增加一列·1·在最后边,列名·value·,然后使用reshape2包来进行格式操作:你的情况是:length -> widt ...
谢谢,但是没怎么看懂,是在原来函数有边加一列value,整个列元素值都为1吗?

板凳
cheetahfly 在职认证  发表于 2016-5-19 11:12:51
这个问题的思路不是dataframe的变形,而是计数。假设你的那个数据变量名是df,数据结构是dataframe。(如果是矩阵,用as.data.frame自行转化)

table(df) 就是你想要的结果了。

报纸
anchu 在职认证  发表于 2016-5-19 11:19:02
cheetahfly 发表于 2016-5-19 11:12
这个问题的思路不是dataframe的变形,而是计数。假设你的那个数据变量名是df,数据结构是dataframe。(如果 ...
先谢了,您说的正确的。另外,怎么把table(df)转换成矩阵,as.matrix(table(df)),得不到矩阵。。。。

地板
cheetahfly 在职认证  发表于 2016-5-19 11:39:54
这是一个table类,想要转化成你熟悉的matrix,可以这样:

a <- table(df)
names(attr(a, "dimnames")) <- NULL
class(a) <- "matrix"

7
jiangbeilu 学生认证  发表于 2016-5-19 11:51:15
上面的问题,其实reshape包也可以解决,我相信bbslover的方法是对的,你需要自己去领悟。
我这里给出我的代码:
  1. genesymbol <- paste("gene",rep(1:3,each=3),sep="")
  2. miRNAname <- paste("miRNA",rep(1:4,3),sep="")
  3. N <- length(miRNAname)
  4. miRNAname <- miRNAname[-((N-2):N)]
  5. df <- data.frame(genesymbol,miRNAname)

  6. df2 <- df
  7. df2$value <- 1
  8. library(reshape)
  9. cast(genesymbol~miRNAname,data=df2,fill=0)
复制代码

8
anchu 在职认证  发表于 2016-5-19 11:56:43
cheetahfly 发表于 2016-5-19 11:39
这是一个table类,想要转化成你熟悉的matrix,可以这样:

a
谢谢,您这个可以,完美解决我的问题。

9
anchu 在职认证  发表于 2016-5-19 12:02:06
jiangbeilu 发表于 2016-5-19 11:51
上面的问题,其实reshape包也可以解决,我相信bbslover的方法是对的,你需要自己去领悟。
我这里给出我的代 ...
谢谢您,大牛,您的回答完美解决我的问题,太感谢了。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 04:46