今天早上在使用数据框进行一些分析时,由于存在重复的列名,我收到了错误.我试图找到一个专门使用dplyr的解决方案,但我找不到任何有效的方法.这是一个说明问题的例子.具有重复列名称的数据框.
x <- data.frame(matrix(c(1, 2, 3),
c(2,2,1),nrow=2,ncol=3))
colnames(x) <- c("a", "a", "b")
Run Code Online (Sandbox Code Playgroud)
当我尝试使用select命令删除第一列时,我收到一个错误
x %>%
select(-1)%>%filter(b>1)
Error: found duplicated column name: a
Run Code Online (Sandbox Code Playgroud)
我可以使用传统的索引和使用dplyr按值过滤来轻松删除列
x<-x[,-1]%>%filter(b>1)
Run Code Online (Sandbox Code Playgroud)
这产生了所需的输出
> x
a b
1 2 3
2 2 3
Run Code Online (Sandbox Code Playgroud)
关于如何仅使用dplyr语法执行此操作的任何想法?
利用make.names行为,这是可行的。不知道我是否在这里作弊,但似乎主要是利用 dplyr 函数。
x %>%
setNames(make.names(names(.), unique = TRUE)) %>%
select(-matches("*\\.[1-9]+$"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2158 次 |
| 最近记录: |