如何识别观察中的重复变量?

时间:2014-10-13 21:02:49

标签: r vector repeat

我是R的新手,我有一个很长的数据集,可能是不同变量中的一些重复值(日期),我想评估两个或多个变量(如果可能)是否相等。

我的数据是这样的:

    Id         date1        date2        date3      date25

     1       17/10/2002   17/10/2002  25/01/2008  25/01/2008
     2       13/04/2009   13/04/2009                        
     3       07/02/2008   
     4       24/11/2006   09/06/2010  09/06/2010

我想为每个人确定哪些变量相等以及哪些变量不相同。我尝试过使用same(),all()和其他函数,但由于我的数据集有超过20k的观察结果,因此很难使用它。

目前重复似乎有效,但它并不是我想要的,也许我做错了什么,这就是我尝试过的:

    mutate(mydata, newv=duplicated(mydata))

mydata是数据帧的子集,仅包含ID和所有日期变量。这会在末尾添加一列,值都是FALSE,但我知道有些值相等(不是在所有变量中),我认为它可能与变量中的缺失值有关。

我想要的输出是这样的:

    Id         date1        date2        date3      date25

     1       17/10/2002   25/01/2008  
     2       13/04/2009                         
     3       07/02/2008   
     4       24/11/2006   09/06/2010  

有人有任何建议吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

这似乎是apply的工作。这是一个可能的解决方案

mydata2 <- as.data.frame(t(apply(mydata, 1, function(x){temp <- unique(x); 
                                             c(temp, rep("", length(x) - length(temp)))})))
names(mydata2) <- names(mydata)
mydata2
#   Id      date1      date2 date3 date25
# 1  1 17/10/2002 25/01/2008             
# 2  2 13/04/2009                        
# 3  3 07/02/2008                        
# 4  4 24/11/2006 09/06/2010