【问题标题】:unique values of each group每个组的唯一值
【发布时间】:2018-09-28 21:48:10
【问题描述】:

我想为数据框 df 中的每个 x 找到 y 的唯一名称。例如

x <- c(1, 2, 3, 1, 2, 3, 1)
y <- c("alf", "be", "be", "cmg", "be", "cmg", "cmg")

df <- data.frame(x,y)
df
          x   y
       1  1 alf
       2  2  be
       3  3  be
       4  1 cmg
       5  2  be
       6  3 cmg
       7  1 cmg

我想要的是,每个 x 值的唯一值

   x   y
   1 alf
     cmg

   2  be

   3  be
     cmg

我所做的是

un_values<- df %>% group_by(x) %>% summarize(un_values=unique(y))

但它只给出唯一的 y 值而没有 x 值。

有什么建议吗?

【问题讨论】:

    标签: r unique


    【解决方案1】:

    如果你想要一个 data.frame 作为输出,试试:

    > aggregate(y~x, data=df, unique)
      x y.1 y.2
    1 1 alf cmg
    2 2  be cmg
    3 3  be cmg
    

    【讨论】:

      【解决方案2】:

      这段代码对我有用

      lapply(split(y, x), unique)
      

      【讨论】:

        【解决方案3】:

        还有dplyr

        library(dplyr)
        df %>% group_by(x) %>% arrange(x) %>% distinct()
        # A tibble: 5 x 2
        # Groups:   x [3]
              x      y
          <dbl> <fctr>
        1     1    alf
        2     1    cmg
        3     2     be
        4     3     be
        5     3    cmg
        

        请注意,由于除了组变量 (x) 之外只有一个变量 (y),dplyr::distinct(df) 也应该可以正常工作

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-06
          • 1970-01-01
          • 2017-12-18
          • 2014-01-03
          • 1970-01-01
          相关资源
          最近更新 更多