根据重复的colname子集dta.frame

时间:2013-05-07 13:59:44

标签: r

我有一个大数据框架,如下所示:

  Col1      Col1    Col2      Col3    Col4     Col4
    sd      rt       yu       hg     e         po
    23      0.12     0.34     0.2    0.98      0.2
    vf      qw       we       mi     kl        jk
    0.21    0.33     0.1      0.234  0.76      0.54

我需要删除(并保存在第二个data.frame中)具有相同标头的所有列。 任何人都可以帮助我,因为我是R的新人吗?

非常感谢! 最好,

1 个答案:

答案 0 :(得分:1)

首先,您应该使用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