如何解决更改数据帧以检查两个数据帧之间的数据是否重复
我有两个数据框,这只是一个示例,数据库有大约一百万条记录。 可以包含姓名,电子邮件,字母数字代码等。
data1<-data.frame(
'ID 1' = c(86364,"ARV_2612","AGH_2212","IND_2622","CHG_2622"),sector = c(3,3,1,2,5),name=c("nhug","hugy","mjuk","ghtr","kuld"),'Enternal code'=c(1,3),col3=c(1,0),col4=c(1,col5=c(1,1)
)
data2<-data.frame(
'ID 1' = c(53265,"ARV_7362",76354,"CHG_9762"),1)
)
data2 %>% mutate(
duplicated = factor(if_else(`ID 1` %in%
pull(data1,`ID 1`),0)))
现在我正在寻找一种函数来像这样改变我的一个数据帧(data2)。如果我给出data1和data2的列名,以查找其他数据中是否已存在值或字符串,并将新列更改为1,0,则为true和false。 功能就像
func(data1 =“ name”,data2 =“ name”,mutated_com =“ name_exist”)
解决方法
在基数R中,您可以将该函数编写为:
func <- function(data1,data2,data1col,data2col,newcol) {
data2[[newcol]] <- factor(as.integer(data2[[data2col]] %in% data1[[data1col]]))
data2
}
并可以将其称为:
func(data1,'name','duplicate')
这将在duplicate
中创建一个名为data2
的列,给出1,其中df2
中的名称也出现在name
的{{1}}中,否则为0。
使用df1
语法可以将以上内容写为:
dplyr
,
您可以使用inner_join(来自dplyr)确定两个数据框之间的重叠。要使用所有列(如果两个数据框具有相同的列名),则不必指定'by'参数。
然后您可以添加一列“重复的”并连接回原始数据框(df1或df2)以获得所需的结果。
overlap <- data1 %>%
inner_join(data2) %>%
mutate(duplicated = 1)
data1 %>% #or data2
left_join(overlap) %>%
mutate(duplicated = ifelse(is.na(duplicated),1))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。