R语言如何标记支付数据中同一邮箱对应多个IP的用户记录
实现方案
方法1:tidyverse(dplyr)方案(适配你常用的管道语法)
直接基于你熟悉的管道语法调整,核心逻辑是按邮箱分组后统计唯一IP数量做判断:
library(dplyr) dataf <- dataf %>% # 按用户邮箱分组 group_by(shopper_email) %>% # 统计当前邮箱对应的唯一IP数量,大于1标记yes否则no mutate(change_ip = ifelse(n_distinct(IP) > 1, "yes", "no")) %>% # 去除分组状态,避免影响后续数据操作 ungroup()
方法2:base R方案(无需加载第三方包)
如果不想依赖第三方包,可以用ave函数实现分组统计:
dataf$change_ip <- ave( dataf$IP, dataf$shopper_email, FUN = function(x) ifelse(length(unique(x)) > 1, "yes", "no") )
两种方案都可以直接得到你需要的输出结果,相比循环写法代码更简洁,处理大样本数据时效率也更高。
内容的提问来源于stack exchange,提问作者Andrea
相关产品推荐
相关产品推荐

