重复检测+在R

时间:2017-02-10 18:27:44

标签: r dplyr

我正在尝试自动执行数据清理过程。我的数据集如下所示:

ADDRESS PHONE TYPE 123 Willow Street 7429947 RESIDENTIAL 123 Willow Street 7426629 RESIDENTIAL 234 Butter Road 7564123 RESIDENTIAL 它非常大 - 几十万行。我希望能够做到以下几点:

(1)重复检测,因此我可以消除“几乎”重复的行 (2)为非重复数据创建一个新列 - 类似于PHONE 2.问题是我事先无法知道是否只有2个重复的行 - 可能是 n

希望结果如下:

ADDRESS PHONE PHONE 2 TYPE 123 Willow Street 7429947 7426629 RESIDENTIAL 234 Butter Road 7564123 RESIDENTIAL

我喜欢用dplyr做到这一点,但我有点不知道从哪里开始。有什么指针吗?

1 个答案:

答案 0 :(得分:1)

使用dplyrtidyr的组合,您可以执行以下操作:

library(dplyr)
library(tidyr)
df <- data.frame(ADDRESS = c('123 Willow Street', '123 Willow Street',
                             '234 Butter Road'),
                 PHONE = c('7429947', '7426629', '7564123'),
                 TYPE = 'RESIDENTIAL', stringsAsFactors = FALSE)
df %>%
  group_by(ADDRESS, TYPE) %>%
  mutate(PHONEID = paste0('PHONE', row_number())) %>%
  spread(PHONEID, PHONE)

输出如下:

Source: local data frame [2 x 4]
Groups: ADDRESS, TYPE [2]

            ADDRESS        TYPE  PHONE1  PHONE2
*             <chr>       <chr>   <chr>   <chr>
1 123 Willow Street RESIDENTIAL 7429947 7426629
2   234 Butter Road RESIDENTIAL 7564123    <NA>