【问题标题】:Keep duplicate values only if they are represented in first sampling period仅当它们在第一个采样周期中表示时才保留重复值
【发布时间】:2017-04-20 04:45:50
【问题描述】:

我正在尝试清理我的数据,以便只保留在我的第一个采样周期内观察到的重复值。例如,如果我的数据框如下所示:

    df <- data.frame(ID = c(1,1,1,2,2,2,3,3,4,4), period = c(1,2,3,1,2,3,2,3,1,3), mass = rnorm(10, 5, 2)) 

    df

       ID period     mass
    1   1      1 3.313674
    2   1      2 6.371979
    3   1      3 5.449435
    4   2      1 4.093022
    5   2      2 2.615782
    6   2      3 3.622842
    7   3      2 4.466666
    8   3      3 6.940979
    9   4      1 6.226222
    10  4      3 4.233397

我想只保留在第 1 期间测量的个人重复的观察结果。我的新数据框将如下所示:

       ID period     mass
    1   1      1 3.313674
    2   1      2 6.371979
    3   1      3 5.449435
    4   2      1 4.093022
    5   2      2 2.615782
    6   2      3 3.622842
    9   4      1 6.226222
    10  4      3 4.233397

使用此页面上的建议 (Remove all unique rows) 我曾尝试使用以下命令,但它留下了个人 3 的观察结果(在第 1 期未测量)。

    subset(df, duplicated(ID) | duplicated(ID, fromLast=T))

【问题讨论】:

    标签: r dataframe duplicates unique subset


    【解决方案1】:

    如果您想要一个基本解决方案,以下也应该可以工作。

    > df_new <- df[df$ID %in% df$ID[df$period == 1], ]
    > df_new
       ID period     mass
    1   1      1 3.238832
    2   1      2 3.428847
    3   1      3 1.205347
    4   2      1 8.498452
    5   2      2 7.523085
    6   2      3 3.613678
    9   4      1 3.324095
    10  4      3 1.932733
    

    【讨论】:

      【解决方案2】:

      你可以使用dplyr如下:

      library(dplyr)
      df %>% group_by(ID) %>% filter(1 %in% period)
      
      #Source: local data frame [8 x 3]
      #Groups: ID [3]
      
      #     ID period     mass
      #  <dbl>  <dbl>    <dbl>
      #1     1      1 7.622950
      #2     1      2 7.960665
      #3     1      3 5.045723
      #4     2      1 4.366568
      #5     2      2 4.400645
      #6     2      3 6.088367
      #7     4      1 2.282713
      #8     4      3 2.461640
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-11
        • 2012-04-30
        • 1970-01-01
        • 2011-02-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多