r - 使用 R 将制表符 delim 文件合并为单个文件

标签 r merge dataframe read.table

我有几个 txt 文件,每个文件中有 3 列,如下所示:
文件1:

ProbeID X_Signal_intensity X_P-Value   
xxx         2.34          .89
xxx         6.45          .04 
xxx         1.09          .91  
xxx         5.87          .70
.            .            . 
.            .            .
.            .            .     

文件2:
ProbeID Y_Signal_intensity Y_P-Value   
xxx         1.4             .92
xxx         2.55            .14 
xxx         4.19            .16  
xxx         3.47            .80
.            .               . 
.            .               .
.            .               . 

文件3:
ProbeID Z_Signal_intensity Z_P-Value   
xxx         9.40             .82
xxx         1.55            .04 
xxx         3.19            .56  
xxx         2.47            .90
.            .               . 
.            .               .
.            .               . 

在上述所有文件中,ProbeID 列的值相同,但其他列的值不同。现在我想使用 for 循环将上述所有文件组合成一个文件,如下所示:
ProbeID X_intensity X_P-Value   Y_intensity Y_P-Value   Z_intensity Z_P-Value     
xxx      2.34          .89       1.4             .92     9.40            .82
xxx      6.45          .04       2.55            .14     1.55            .04
xxx      1.09          .91       4.19            .16     3.19            .56
xxx      5.87          .70       3.47            .80     2.47            .90

请帮助我。

最佳答案

读入 Richie Cotton 给出的文件,但确保在 apply 调用中添加适当的额外参数。其中之一,header=TRUE应该可以添加。

file.names <- c("file X.txt", "file Y.txt", "file Z.txt")
file.list <- lapply(file.names, read.table, header=TRUE)

那么你可能需要一个 merge_recurse来自 reshape package :
require(reshape)
mynewframe <- merge_recurse(file.list,all.x=TRUE,all.y=TRUE,by="ProbeID")

这将适用于任何给定数量的数据帧,前提是它不是十亿个。有关所用参数的更多信息,请参阅 ?merge 的帮助页面。 .

更正:在merge_recurse 中,您必须使用all.xall.y如上面的更正所示。您不能只使用快捷方式 all否则你会得到错误。

小示范:
X2 <- data.frame(ProbeID=(2:4),Z2=4:6)
X1 <- data.frame(ProbeID=1:3,Z1=1:3)
X3 <- data.frame(ProbeID=1:3,Z3=7:9)
file.list <- list(X1,X2,X3)
mynewframe <- merge_recurse(file.list,all.x=TRUE,all.y=TRUE,by="ProbeID")
> mynewframe
  ProbeID Z1 Z2 Z3
1       1  1 NA  7
2       2  2  4  8
3       3  3  5  9
4       4 NA  6 NA

关于r - 使用 R 将制表符 delim 文件合并为单个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6942662/

相关文章:

R:对于两个数据框共享的列中的给定变量值,将数据框 x 中的行名称与数据框 y 中的列名称进行匹配

sql server 2008数据库与另一个数据库合并

python - 在 python-pptx 中使用循环创建多张幻灯片并将数据帧写入幻灯片

python - 将列表或系列作为一行 append 到 pandas DataFrame?

r - 如何从 get_friends 函数返回的 tibbles 列表中删除空的 tibbles?

r - 没有事件的 react 上下文不允许操作

r - 如何将 here() 用于 css、before_body 和 after_body 的路径?

R Shiny : How to select a DataTable page based on a selected row when the row order has changed?

git - 为什么 git merge 会让我丢失一行

python - 如何在数据帧上一项一项地迭代?