我希望基于两列中任一列的相同值生成唯一的ID。具体来说,我拥有一个历史时期内客户的电话号码和电子邮件。因此,即使客户在此时间段内更改了电话号码或电子邮件,我也想生成一个标识该客户的唯一ID。数据如下:
E-mail Phone Name
mortena 3076 morten
kaspera 2688 kasper
christoffera 1212 christoffer
mortenb 3076 morten
mortena 3075 morten
kasperb 2688 kasper
christoffera 1213 christoffer
我想产生这个结果:
E-mail Phone Name ID
mortena 3076 morten 1
kaspera 2688 kasper 2
christoffera 1212 christoffer 3
mortenb 3076 morten 1
mortena 3075 morten 1
kasperb 2688 kasper 2
christoffera 1213 christoffer 3
非常感谢您的帮助!
我试图利用下面的代码。但是,这似乎是基于相同的电子邮件和电话号码创建ID的。我希望根据电子邮件或电话号码生成唯一的ID。
test_data %>%
mutate(ID = group_indices_(test_data, .dots=c("E.mail", "Phone")))
我希望脚本检查电话号码并为每个唯一的电话号码生成一个唯一的ID,如果找不到重复的电话号码,请通过电子邮件进行相同的操作。
答案 0 :(得分:1)
在上面我的评论中,要重现相同的List<Integer> list = new ArrayList<>();
list.stream().map(xyz -> {}); // Here xyz is always of type Integer for this instance.
// Then why does it take input as "? super Integer"?
顺序,您需要确保正确的ID
级别的顺序
factor
或带有library(dplyr)
df %>% mutate(ID = as.integer(factor(Name, levels = unique(Name))))
# E.mail Phone Name ID
#1 mortena 3076 morten 1
#2 kaspera 2688 kasper 2
#3 christoffera 1212 christoffer 3
#4 mortenb 3076 morten 1
#5 mortena 3075 morten 1
#6 kasperb 2688 kasper 2
#7 christoffera 1213 christoffer 3
group_indices
如果df %>% mutate(ID = group_indices(., factor(Name, levels = unique(Name))))
的顺序无关紧要,则可以
ID
或
df %>% mutate(ID = as.integer(as.factor(Name)))
在这些情况下,df %>% mutate(ID = group_indices(., Name))
的顺序由唯一的ID
的字母顺序确定(而不是由它们的出现决定)。
Name