楼主: 蛮好的
6918 17

[问答] R 根据列名合并矩阵 [推广有奖]

11
llb_321 在职认证  发表于 2020-4-22 22:20:12
大致看了你的说明,我不确定是否懂了你的想法。我猜是这样啊:
1、你的原数据是矩阵,不是数据框,所以用inner_join出了问题。
2、你想用excel表中列的样本编号,索引原数据中的基因数据。
基于上述理解,我想可能的方法:
1、原数据矩阵先as.data.frame()转成数据框E,看看列名的样本编号还在不在,如果在的话,将数据框转置一下,用 t()函数。因为你的原矩阵中列名是样本编号,行名是基因表达,所以转置以便后面合并操作。
2、转置后,数据框应该是没有列名的,第一列应该是样本编号,但[1,1]应该是NA。这时,应该为数据框定义列名,第一列,比如说index,随你喜欢,从第二列起,把第一行的基因表达作为各列的列名。然后删除第一行,因为[1,1]是NA。这样,原数据就应该调整好了。
3、读入EXCEL表,用读入数据的第一列重新做个数据框F(只用这一列),之所以重做,是因为列名改为index,和原数据第一列列名相同即可。
4、可以不用你那个inner_join(),这是取交集的。直接用left_join(), 比如 result <- F %>% left_join(E, by="index")
估计不出问题的话,应该是你要的结果。如果在结果中你想加上excel表中其它列数,在第3步select就可以了。

12
蛮好的 发表于 2020-4-23 14:34:55
我合并好了,但怎么数据懂丢失了?能麻烦再看一下吗?显示:Warning message:Column `xuyao` joining factors with different levels, coercing to character vector

结果.PNG (26.96 KB)

结果.PNG

13
蛮好的 发表于 2020-4-23 14:36:54
llb_321 发表于 2020-4-22 22:20
大致看了你的说明,我不确定是否懂了你的想法。我猜是这样啊:
1、你的原数据是矩阵,不是数据框,所以用i ...
能帮忙在看一下吗?数据丢失了
显示:Warning message:Column `xuyao` joining factors with different levels, coercing to character vector
这是需要被筛选的数据框,从excel表里选出的一列,最后是结果
需被筛选数据框的4行4列.PNG
excel1.PNG 结果.PNG

14
llb_321 在职认证  发表于 2020-4-23 17:22:45
挖野菜去了,刚回家。奇怪啊,竟然样本和指标都在,值却是NA,我也不知道哪步出错了。你一步步调试,检查源数据矩阵调整后合并前是否数据是NA,估计是这里的问题,合并函数不应该出错的

15
llb_321 在职认证  发表于 2020-4-23 17:30:40
另外,我看你源数据的样本编号都是.分隔的,而excel表的样本编号用-分隔的,二者格式有很大差别,是不是源数据中没有这205个样本编号啊,或者有编号但格式不一致?

16
llb_321 在职认证  发表于 2020-4-23 17:34:49
你把excel表的样本编号中的-替换成“.”试试

17
蛮好的 发表于 2020-4-23 18:29:57
llb_321 发表于 2020-4-23 17:34
你把excel表的样本编号中的-替换成“.”试试
弄好了,虽然合并的时候还是丢掉了一些数据,但改了之后大部分保留了,不影响结果。真的太谢谢了,真的细心、厉害,感谢了。大神如果还有时间的话,可以再帮我看一下,为什么有的行全是NA,想弄清楚一下
运行后显示:Warning message:Column `xuyao` joining factors with different levels, coercing to character vector
有全是NA的空行.PNG

18
llb_321 在职认证  发表于 2020-4-23 19:19:11
我是初入门,憋家里闲的,找个乐,呵呵,真的不用客气。NA的样本,我也不好说什么原因。我体会,很多问题都是源于数据的格式或类型以及R对数据的默认处理,比如读入excel的数据看起来正常,但可能有编码的问题,也可能有数据类型的问题,都会导致意想不到的结果。所以,我都尽量用csv数据。以后再做分析时,留意对原始数据的清洗调整就好了。

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

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