まず、2 重に表示されるすべての列名を特定する必要があります(2 重になったステートメントduplicated
を取り除くのに役立つ提案をいただければ幸いです)。duplicated
これらの列インデックスを数値ベクトルに格納して、さらに作業を進めます。
# Data generation
data <- data.frame(rbind(c("sd", "rt", "yu", "hg", "e", "po"),
c(23, .12, .34, .2, .98, .2),
c("vf", "qw", "we", "mi", "kl", "jk"),
c(.21, .33, .1, .234, .76, .54)))
names(data) <- c("Col1", "Col1", "Col2", "Col3", "Col4", "Col4")
# Identify duplicated column names
dupl.cols.ff <- duplicated(names(data))
dupl.cols.fl <- duplicated(names(data), fromLast = TRUE)
dupl.cols <- sort(unique(c(which(dupl.cols.ff), which(dupl.cols.fl))))
これで、識別された列に基づいて新しいデータフレームを構築し、最初のデータフレームからそれらを削除できます。
# Build new dataframe with duplicated columns
data2 <- data[,dupl.cols]
names(data2) <- names(data)[dupl.cols]
data2
Col1 Col1 Col4 Col4
1 sd rt e po
2 23 0.12 0.98 0.2
3 vf qw kl jk
4 0.21 0.33 0.76 0.54
# Remove duplicated columns from initial dataframe
data <- data[,-dupl.cols]
data
Col2 Col3
1 yu hg
2 0.34 0.2
3 we mi
4 0.1 0.234