每组的唯一值

时间:2018-09-28 21:48:11

标签: r unique

我想为数据帧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值。

有什么建议吗?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

此代码对我有用

lapply(split(y, x), unique)

答案 2 :(得分:1)

并使用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)也可以正常工作