楼主: 不二不幸福
13845 12

[问答] R语言合并多个文件 [推广有奖]

  • 0关注
  • 1粉丝

硕士生

33%

还不是VIP/贵宾

-

威望
0
论坛币
161 个
通用积分
2.8500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1641 点
帖子
76
精华
0
在线时间
160 小时
注册时间
2017-9-26
最后登录
2024-6-14

楼主
不二不幸福 发表于 2018-1-18 11:12:37 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
现在手里有39个文件,而且挺大,想要将他们合并成一个文件,为了描述清楚过程决定套用一下网上看见的这张图片:
351349540923dd544932e9bbda09b3de9d8248a4.jpg
我的数据也是想做一个这样的合并,但是现在完全没有思路,有高手愿意提点一下吗?
二维码

扫码加我 拉你入群

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

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

关键词:R语言

沙发
yywan0913 在职认证  发表于 2018-1-18 11:51:50
多个文件的话,循环 data1=merge(data1,data2,all=T);    即可

藤椅
xing035400 在职认证  发表于 2018-1-18 14:07:31
我也是初学者,我也来解答下题目。
我先创建了楼主的两个数据框,data1和data2,用于练习。
我用了merge和dplyr包中的full_join两种办法

merge
full_join

已有 2 人评分经验 论坛币 热心指数 收起 理由
jiangbeilu + 11 精彩帖子
cheetahfly + 30 + 1 精彩帖子

总评分: 经验 + 30  论坛币 + 11  热心指数 + 1   查看全部评分

板凳
不二不幸福 发表于 2018-1-18 14:41:30
xing035400 发表于 2018-1-18 14:07
我也是初学者,我也来解答下题目。
我先创建了楼主的两个数据框,data1和data2,用于练习。
我用了merge和 ...
非常感谢!我去试试

报纸
不二不幸福 发表于 2018-1-18 19:24:31
xing035400 发表于 2018-1-18 14:07
我也是初学者,我也来解答下题目。
我先创建了楼主的两个数据框,data1和data2,用于练习。
我用了merge和 ...
用这两种方法做出来的结果不一样诶

地板
不二不幸福 发表于 2018-1-18 20:22:01
试了上面那位说的方法,的确是有用的,但是我想批量合并的时候又出错了,本来数据是39个,现在我拿了4个出来测试,代码如下:
  1. a = list.files()
  2. dir = paste("./",a,sep="")
  3. n = length(dir)
  4. merge_data = read.csv(file = dir[1],sep=",",header=T)
  5. for (i in 2:n){
  6.    new_data = read.csv(file = dir[i],sep=",",header=T)
  7.    merge_data = merge(merge_data,new_data,by=c("chr","position"),all=TRUE)
  8. }
复制代码

然后报错了。。。。。。。
Warning message:
In merge.data.frame(merge_data, new_data, by = c("chr", "position"),  :
  column names ‘coverage.x’, ‘methylation.x’, ‘coverage.y’, ‘methylation.y’ are duplicated in the result
我之前试过先手动合并两个,再与第三个合并,列名合并之后是coverage.x、coverage.x.x。。。。。现在说列名重复,那么合并之后的列名可以改吗?以及我的代码有没有问题?请高手告知

7
不二不幸福 发表于 2018-1-18 20:40:38
不二不幸福 发表于 2018-1-18 20:22
试了上面那位说的方法,的确是有用的,但是我想批量合并的时候又出错了,本来数据是39个,现在我拿了4个出来 ...
就是说我要合并的每个文件和图上一样只有4列,而且这四列的列名都是一样的,所以说我列名重复了

8
yywan0913 在职认证  发表于 2018-1-19 09:48:46
不二不幸福 发表于 2018-1-18 20:22
试了上面那位说的方法,的确是有用的,但是我想批量合并的时候又出错了,本来数据是39个,现在我拿了4个出来 ...
warning不叫报错。
把你的  by=c('chr','position')  去掉

9
xing035400 在职认证  发表于 2018-1-19 11:16:57
不二不幸福 发表于 2018-1-18 20:40
就是说我要合并的每个文件和图上一样只有4列,而且这四列的列名都是一样的,所以说我列名重复了
尝试着用dplyr包中的full_join,去掉by=c("XXX","XXX")这个参数,如果列名是一致的,那么R会自动帮你匹配

10
不二不幸福 发表于 2018-1-19 14:15:52
xing035400 发表于 2018-1-19 11:16
尝试着用dplyr包中的full_join,去掉by=c("XXX","XXX")这个参数,如果列名是一致的,那么R会自动帮你匹配
感谢,我试试

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-9 07:02