首页 文章

删除重复的列dplyr

提问于
浏览
9

今天早上在使用数据框进行一些分析时,由于存在重复的列名,我收到了错误 . 我试图找到一个专门使用dplyr的解决方案,但我找不到任何有效的方法 . 这是一个说明问题的例子 . 具有重复列名称的数据框 .

x <- data.frame(matrix(c(1, 2, 3),
                c(2,2,1),nrow=2,ncol=3))
colnames(x) <- c("a", "a", "b")

当我尝试使用select命令删除第一列时,我收到一个错误

x %>%
  select(-1)%>%filter(b>1)

Error: found duplicated column name: a

我可以使用传统的索引和使用dplyr按值过滤来轻松删除列

x<-x[,-1]%>%filter(b>1)

这产生了所需的输出

> x
  a b
1 2 3
2 2 3

关于如何仅使用dplyr语法执行此操作的任何想法?

2 回答

  • 2

    这可以起作用,利用 make.names 行为 . 唐't know if I'在这里作弊,但似乎主要是利用dplyr功能 .

    x %>% 
        setNames(make.names(names(.), unique = TRUE)) %>% 
        select(-matches("*\\.[1-9]+$"))
    
  • 0

    如果你想完全摆脱第一列,我会这样做

    x <- x[, c(2:3)]
    

    或者您可以重命名它

    colnames(x)[1] <- "a.1"
    

相关问题