使用dplyr仅保留数据导入中的一个唯一列

时间:2016-01-08 11:52:37

标签: r select dataframe duplicates dplyr

我有兴趣使用 dplyr 删除列,其中符合以下特征:

  • 列值相同
  • 列名相同

数据

我正在处理与提取对应的数据集:

data("mtcars")
dta <- cbind(mtcars, mtcars[,1:4], mtcars[,1:2], mtcars[,4:6])

任务

使用 dplyr 我想通过删除重复的列来回到原始的 mtcars 数据。 在现实世界中,我无法使用原始的mtcars,即我无法获取应该在数据中的列名列表。

尝试1

我想在这些方面做点什么:

require(dplyr); require(magrittr)
dta %<>%
  select(matches(unique(names(dta))))

当然这不起作用:

  

错误:is.string(匹配)不为TRUE

此外,代码不包含检查是否存在重复值。

1 个答案:

答案 0 :(得分:1)

可能我们可以试试

    #1st test

curl -v http://elifepower2015-test.appspot.com/gcsReadTest?filename=test
*   Trying 74.125.204.141...
* Connected to elifepower2015-test.appspot.com (74.125.204.141) port 80 (#0)
> GET /gcsReadTest?filename=test HTTP/1.1
> Host: elifepower2015-test.appspot.com
> User-Agent: curl/7.42.1
> Accept: */*
> 
< HTTP/1.1 200 OK
< Content-Type: text/plain
< Date: Fri, 08 Jan 2016 11:44:09 GMT
< Server: Google Frontend
**< Content-Length: 16**
< 
aaaaaaaa
* Connection #0 to host elifepower2015-test.appspot.com left intact
bbbbbbb

#2nd test
curl -v http://elifepower2015-test.appspot.com/gcsReadTest?filename=test
*   Trying 74.125.204.141...
* Connected to elifepower2015-test.appspot.com (74.125.204.141) port 80 (#0)
> GET /gcsReadTest?filename=test HTTP/1.1
> Host: elifepower2015-test.appspot.com
> User-Agent: curl/7.42.1
> Accept: */*
> 
< HTTP/1.1 200 OK
< Content-Type: text/plain
< Date: Fri, 08 Jan 2016 11:44:15 GMT
< Server: Google Frontend
**< Content-Length: 34**
< 
aaaaaaaa
bbbbbbb
cccccccc