在单个DataFrame中连接重复的列

  • 本文关键字:连接 单个 DataFrame r
  • 更新时间 :
  • 英文 :


我有一个数据框,每个列具有唯一名称,但是几列的内容相同。具有相同内容的列都是因子变量,它们以相同的方式结束(例如.x或.y(。我的目标是将所有列以相同的结尾(.x或.y(连接到一个列中。

我在这方面遇到的大多数解决方案都结合了多个数据范围,但是我还没有找到在单个数据帧中执行此操作的解决方案。我正在提供一些示例脚本来说明我的数据框架目前的外观和所需的输出。

# generate some data
dv1 = rnorm(6)
dv2 = rnorm(6)
dv3 = rnorm(6)
# current dataframe
DF <- data.frame(dv1, 
                 iv1.x = sort(rep(letters[1:2], 3)), 
                 iv1.y = as.factor(c(1:6)),
                 dv2, 
                 iv2.x = sort(rep(letters[1:2], 3)), 
                 iv2.y = as.factor(c(1:6)),
                 dv3, 
                 iv3.x = sort(rep(letters[1:2], 3)), 
                 iv3.y = as.factor(c(1:6))
                 )
# desired dataframe 
DF.cbmd <- data.frame(dv1,
                 dv2, 
                 dv3,
                 iv1.x = sort(rep(letters[1:2], 3)), 
                 iv1.y = as.factor(c(1:6))
                 )

如果它们确实是重复的列,则似乎没有用来合并它们,但是您可以简单地删除它们:

dfUnique <- DF[!duplicated(as.list(DF))]

您的数据框架似乎是合并的结果。理想的解决方法是在上一步(合并(上处理此问题。但是,另一个想法是在.之前以列名的名称删除所有内容,然后简单地删除重复的列名,即

DF[!duplicated(gsub('.*\.', '', names(DF)))]

最新更新