代码之家  ›  专栏  ›  技术社区  ›  melbez

按R中的索引组合行[重复]

  •  -1
  • melbez  · 技术社区  · 8 年前

    编辑:我知道已经回答了一个类似的问题,但在我下面提供的数据集上它对我不起作用。以上数据帧是我使用扩展函数的结果。我仍然不知道如何巩固它。

    EDIT2:我意识到我之前在数据中使用的group\u by function阻止了扩展函数以我最初希望的方式工作。使用ungroup后,我可以直接从原始数据集(下图中未显示)转到下图中的第二个数据帧。


    我有一个如下所示的数据框。我正在努力做到每个id号只有一行。

    id  init_cont  family  1  2  3
    1   I          C       1  NA NA
    1   I          C       NA 4  NA
    1   I          C       NA NA 3
    2   I          D       2  NA NA
    2   I          D       NA 1  NA
    2   I          D       NA NA 4
    3   K          C       3  NA NA
    3   K          C       NA 4  NA
    3   K          C       NA NA 1
    

    我希望生成的数据帧如下所示。

    id  init_cont  family  1  2  3
    1   I          C       1  4  3
    2   I          D       2  1  4
    3   K          C       3  4  1
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   akrun    8 年前

    我们可以 group_by “d”、“init\u cont”、“family”,然后执行 summarise_all 要删除所有 NA 列中的元素1:3

    library(dplyr)
    df1 %>%
       group_by_at(names(.)[1:3]) %>%
       summarise_all(na.omit)
       #Or
       #summarise_all(funs(.[!is.na(.)]))
    # A tibble: 3 x 6
    # Groups: d, init_cont [?]
    #      d init_cont family   `1`   `2`   `3`
    #   <int> <chr>     <chr>  <int> <int> <int>
    #1     1 I         C          1     4     3
    #2     2 I         D          2     1     4
    #3     3 K         C          3     4     1