您如何为另一个 R 中的每个唯一值将一列中的值分组?

How do you group values in one column for each unique value in another R?

这是一个初级问题,但我已经卡了好久了。我正在尝试对 ColumnB 中的值进行分组,但仅限于 ColumnA 中的每个值。

初始数据框类似于:

ColumnA = c(1,1,1,2,2,2)
ColumnB = c("f","g","g","f","f","h")
df <- data.frame(ColumnA,ColumnB)
ColumnA    ColumnB
    1         f
    1         g
    1         g
    2         f
    2         f
    2         h

结果将是:

ColumnA    ColumnB
    1         f
    1         g
    2         f
    2         h

(我尝试使用的方法之一是 dplyr 使用:group_by(df, ColumnB),但该尝试未成功。)

unique 函数非常适合(没有双关语意)解决您的问题:

df <- data.frame(v1=c(1,1,1,2,2,2), v2=c("f", "g", "g", "f", "f", "h"))
df <- unique(df)

> df1
  v1 v2
1  1  f
2  1  g
4  2  f
6  2  h

对于dplyr,您希望在对它们进行分组后执行操作;单独分组不会折叠行。您可以使用 summarise() 进行计算,根据变量在组中选择一行,等等。这是一个示例,其中 slice() 到 select 每个组组合中的第一条记录:

library(dplyr)
df %>%
  group_by(ColumnA, ColumnB) %>%
  slice(1) # select the first row within each group combination

Source: local data frame [4 x 2]
Groups: ColumnA, ColumnB

  ColumnA ColumnB
1       1       f
2       1       g
3       2       f
4       2       h

你也可以试试duplicated

df[!duplicated(df),]
#   ColumnA ColumnB
#1       1       f
#2       1       g
#4       2       f
#6       2       h

如果需要,这还会给出行的逻辑索引。