我想为数据帧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值。
有什么建议吗?
答案 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)
也可以正常工作