【问题标题】:How to identify repeated variables within observations?如何识别观察中的重复变量?
【发布时间】:2014-10-14 06:40:48
【问题描述】:

我是 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  

大家有什么建议吗?

谢谢!!

【问题讨论】:

  • 你试过duplicated吗?您是指每行中的每个变量都与其他变量不同吗?您的示例数据的期望结果是什么?
  • 欢迎来到 StackOverflow。要获得具体答案,您应该粘贴一些您使用过的代码并描述您面临的具体问题。
  • 是的,我确实尝试过重复,但我认为我做错了什么。有些变量是相等的,而有些变量是不同的。
  • 您希望从您提供的示例数据集中得到什么输出?
  • 我用我想要的输出更新了这个问题,我想这不仅仅是识别重复的值。谢谢!

标签: r vector repeat


【解决方案1】:

这似乎是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    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 2017-02-14
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多