【问题标题】:How to delete columns with repetitive column names in R如何删除R中具有重复列名的列
【发布时间】: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
  • 感谢您考虑我的问题。我已在问题中添加了要求的附加信息。

标签: r dataframe rename del


【解决方案1】:

我用下面的代码做到了:

library(data.table)

file_list <- list.files('/home/ahus/Softmaker/ACKR2', pattern="*.csv", full.names=TRUE)

ldf <- lapply(file_list , read.csv)
df.combined <- do.call(cbind, ldf)
x <- seq(0,78,by=3)
df.restructured <- df.combined[c(2,x)]

【讨论】:

    最近更新 更多