【发布时间】:2021-04-19 06:49:38
【问题描述】:
我已将 26 个 csv 文件(每个包含 3 列)合并到 1 个数据框中。所以,我总共有 78 列。现在,第 1 列类似于第 4、7、10 列等等。同样,第 2 列类似于第 5、8、11 等列。列名也相似,我需要将它们全部删除,但第 2 列除外,因为 1 需要出现 1 次。下面是我的编码。我尝试重命名第 2 列,然后删除其余列,但出现以下错误:
错误:名称必须是唯一的。 x 这些名字是重复的:
- 位置 2、4、6、8、10 等处的“PI”。
- 位置 3、5、7、9、11 等处的“POS”。
编码:
colname <- names(df.combined)
colname[2] <- paste(colname[2], "_chrom")
colnames(df.combined) <- colname
library(dplyr)
df.combined <- select(df.combined, -CHROM).
此外,可能有更好的方法来重命名第 2 列,因为我只能将其从 POS 更改为 POS_chrom。实际上,我想给它一个新名称,而不是添加 _chrom 给它。 重命名第二列后的列名如下(简化示例)。这样一直持续到第 78 列。 CHROM POS_chrom PI CHROM POS PI CHROM POS PI
这是我编写的代码,用于将文件合并到 1 个数据帧中:
library(data.table)
file_list <- list.files('/home/aahm/SoftMaker/Documents/Aaisha/MPhil_PhD/2021/1.January/Results/csv_files/sitepi/ACKR2', pattern="*.csv", full.names=TRUE)
ldf <- lapply(file_list , read.csv)
df.combined <- do.call(cbind, ldf)
View (df.combined)
这是我的数据框的一部分,包含 6 列和 8 行,但实际数据集比这大得多,我必须多次重复相同的过程。
CHROM POS PI CHROM POS PI 3 42809473 0 3 42809473 0 3 42809498 0.01042 3 42809498 0 3 42809524 0 3 42809524 0 3 42809625 0 3 42809625 0 3 42809638 0 3 42809638 0 3 42809715 0.30628 3 42809715 0.20485 3 42809846 0 3 42809846 0
实际上我需要最终数据帧中的第 2、3、6、9、12、x、y、z、78 列,其中 x、y 和 z 是 3 的倍数。
【问题讨论】:
-
您能否提供一个
df.combined的可重现示例?至少使用dput(df.combined[1:5,])提供第一行。 -
你是如何将它们组合成一个数据框的?您能否显示您在
df.combined中的列以及您想将它们更改为什么? -
相信你在找
merge。 -
感谢您考虑我的问题。我已在问题中添加了要求的附加信息。