从数据框中删除重复的单位
发布时间:2020-12-14 04:19:30 所属栏目:大数据 来源:网络整理
导读:我正在研究一个包含n个协变量的大型数据集.许多行都是重复的.为了识别重复项,我需要使用协变量的子集来创建标识变量.也就是说,(n-x)协变量是无关紧要的.我想连接x协变量上的值,以唯一地识别观察结果并消除重复. set.seed(1234)UNIT - c(1,1,2,3,4,5,6,6)DATE
我正在研究一个包含n个协变量的大型数据集.许多行都是重复的.为了识别重复项,我需要使用协变量的子集来创建标识变量.也就是说,(n-x)协变量是无关紧要的.我想连接x协变量上的值,以唯一地识别观察结果并消除重复.
set.seed(1234) UNIT <- c(1,1,2,3,4,5,6,6) DATE <- c("1/1/2010","1/1/2010","1/2/2012","1/2/2009","1/2/2004","1/2/2005","1/1/2011","1/1/2009","1/1/2008","1/1/2012","1/1/2013","1/1/2012") OUT1 <- c(300,400,600,700,800,900,100,500) JUNK1 <- c(rnorm(17,1)) JUNK2 <- c(rnorm(17,1)) test = data.frame(UNIT,DATE,OUT1,JUNK1,JUNK2) ‘test’是一个示例数据框.我需要用来唯一识别观察结果的变量是’UNIT’,’DATE’和’OUT1′.例如, head(test) UNIT DATE OUT1 JUNK1 JUNK2 1 1 1/1/2010 300 -1.2070657 -0.9111954 2 1 1/1/2010 400 0.2774292 -0.8371717 3 1 1/1/2010 400 1.0844412 2.4158352 4 1 1/2/2012 400 -2.3456977 0.1340882 5 2 1/2/2009 600 0.4291247 -0.4906859 6 2 1/2/2004 700 0.5060559 -0.4405479 观察1和4在数据集中不重复.观察2和3是重复的.我想要创建的新数据集将保留观察1和4,并且只保留2和3中的一个.我尝试的解决方案是: subset(test,!duplicated(c(UNIT,OUT1))) 遗憾的是,这并没有成功: UNIT DATE OUT1 JUNK1 JUNK2 1 1 1/1/2010 300 -1.20706575 -0.9111954 5 2 1/2/2009 600 0.42912469 -0.4906859 8 3 1/2/2005 800 -0.54663186 -0.6937202 11 4 1/1/2011 900 -0.47719270 -1.0236557 14 5 1/1/2008 100 0.06445882 1.1022975 15 6 1/1/2012 100 0.95949406 -0.4755931 虽然它确实忽略了无关的变量(JUNK1,JUNK2),但这种技术太贪婪了.新数据集应包含对单元1的三个观察结果,因为当UNIT = 1时,有三个UNIT DATE OUT1的唯一组合.有没有办法在不编写函数的情况下实现此目的? 解决方法
您可以将data.frame传递给重复的
在您的情况下,您希望传递前3列测试 test2 <- test[!duplicated(test[,1:3]),] 如果您正在使用大数据,并且想要包含data.tables,那么您可以将密钥设置为前三列(您要从中删除重复项),然后使用唯一 library(data.table) DT <- data.table(test) # set the key setkey(DT,UNIT,OUT1) DTU <- unique(DT) 有关重复项和data.tables的更多详细信息,请参阅Filtering out duplicated/non-unique rows in data.table (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |