在R中使用聚合来查找另一个变量的相同值的一个变量的唯一值

sal*_*dra 3 aggregate r

我想在此数据框中应用聚合函数:

A <- data.frame(c(1:2,1:2,2),c("a","c","b","c","d"))
colnames(A) <- c("ola","hi")
A

> A
  ola hi
1   1  a
2   2  c
3   1  b
4   2  c
5   2  d
Run Code Online (Sandbox Code Playgroud)

获得A的有序值A $ ola和相应的A $ hi唯一值,如下所示:

A <- data.frame(c(1:2),c("a,b","c,d"))
colnames(A) <- c("ola","hi")
> A
  ola  hi
1   1 a,b
2   2 c,d
Run Code Online (Sandbox Code Playgroud)

我试过这段代码:

aggregate(A, by=list(A$ola), FUN=unique)
Run Code Online (Sandbox Code Playgroud)

但它给出了这样的结果:

  Group.1 ola hi.1 hi.2
1       1   1    a    b
2       2   2    c    d
Run Code Online (Sandbox Code Playgroud)

可以请有人解释我,我做错了什么?

akr*_*run 5

除了paste方法之外,如果我们想要'hi'列作为list,

r1 <- aggregate(hi~ola, unique(A), FUN=list)
r1
#  ola   hi
#1   1 a, b
#2   2 c, d
Run Code Online (Sandbox Code Playgroud)

OP的代码给出了一个 data.frame

r2 <- aggregate(hi~ola, A, FUN=unique)
r2
#  ola hi.1 hi.2
#1   1    a    b
#2   2    c    d
Run Code Online (Sandbox Code Playgroud)

有两列,第二列'hi'是aa matrix.

str(r2)
#'data.frame':  2 obs. of  2 variables:
#$ ola: int  1 2
#$ hi : chr [1:2, 1:2] "a" "c" "b" "d"
Run Code Online (Sandbox Code Playgroud)