将具有不同行号的计数表组合成矩阵 - 文件名是列名
Combining count tables with different row numbers to matrix - file names are column names
我经常需要在 R 中导入多个文本文件并将它们组合成一个矩阵以供进一步分析。通常我处理来自微生物学研究的计数数据,第一列是项目,第二列是计数。样本中的行数通常不相同。
我想将这些单个文件组合成一个矩阵,其中行名是第 1 列的项目,列显示第 2 列的计数。最终 table 的列名应该是文件原始单个文件的名称。
这是一个最小的例子:
文件 1:Sample1.csv
[1] [2]
[1] A , 3
[2] B , 5
[3] C , 7
[4] D , 2
[5]. E , 1
文件 2:Sample2.csv
[1] [2]
[1] B , 1
[2] C , 3
[3] F , 4
[4] G , 7
最终想要的输出
[Sample1] [Sample2]
[A] 3 NA
[B] 5 1
[C] 7 3
[D] 2 NA
[E] 1 NA
[F] NA 4
[G] NA 7
我知道在这种情况下,您必须开始将文件作为列表加载到 R 中
all_paths <-list.files(path = "/path/to/directory/with/.csv", pattern = "*.csv",full.names = TRUE)
all_content <-
all_paths %>%
lapply(read.table,
header = FALSE, row.names =1,
sep = ",",
encoding = "UTF-8")
这给了我一个数据框列表,其中的项目作为行名和第一列中的计数
我现在很难将此列表与上面显示的模式结合起来。我尝试了 rbind.fill (dpylr) 和不同帖子中的其他功能,但从未成功。
非常感谢任何帮助!
不要将项目作为行名,将它们作为第一列阅读。将数据放入列表中并使用 Reduce
.
进行全连接
all_paths <-list.files(path = "/path/to/directory/with/.csv", pattern = "*.csv",full.names = TRUE)
all_content <-lapply(all_paths, read.table,sep = ",", encoding = "UTF-8")
result <- Reduce(function(x, y) merge(x, y, by = 'V1', all = TRUE), all_content)
我经常需要在 R 中导入多个文本文件并将它们组合成一个矩阵以供进一步分析。通常我处理来自微生物学研究的计数数据,第一列是项目,第二列是计数。样本中的行数通常不相同。
我想将这些单个文件组合成一个矩阵,其中行名是第 1 列的项目,列显示第 2 列的计数。最终 table 的列名应该是文件原始单个文件的名称。
这是一个最小的例子: 文件 1:Sample1.csv
[1] [2]
[1] A , 3
[2] B , 5
[3] C , 7
[4] D , 2
[5]. E , 1
文件 2:Sample2.csv
[1] [2]
[1] B , 1
[2] C , 3
[3] F , 4
[4] G , 7
最终想要的输出
[Sample1] [Sample2]
[A] 3 NA
[B] 5 1
[C] 7 3
[D] 2 NA
[E] 1 NA
[F] NA 4
[G] NA 7
我知道在这种情况下,您必须开始将文件作为列表加载到 R 中
all_paths <-list.files(path = "/path/to/directory/with/.csv", pattern = "*.csv",full.names = TRUE)
all_content <-
all_paths %>%
lapply(read.table,
header = FALSE, row.names =1,
sep = ",",
encoding = "UTF-8")
这给了我一个数据框列表,其中的项目作为行名和第一列中的计数
我现在很难将此列表与上面显示的模式结合起来。我尝试了 rbind.fill (dpylr) 和不同帖子中的其他功能,但从未成功。
非常感谢任何帮助!
不要将项目作为行名,将它们作为第一列阅读。将数据放入列表中并使用 Reduce
.
all_paths <-list.files(path = "/path/to/directory/with/.csv", pattern = "*.csv",full.names = TRUE)
all_content <-lapply(all_paths, read.table,sep = ",", encoding = "UTF-8")
result <- Reduce(function(x, y) merge(x, y, by = 'V1', all = TRUE), all_content)