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

如何在一列中为另一个R中的每个唯一值分组值?,r,aggregate,R,Aggregate,这是一个基本的问题,但我已经在这上面停留了很长时间。我试图将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楼 1克 二楼 2小时 (我尝试使用的方法之一是使用dplyr使用:groupby(df,ColumnB),但尝

这是一个基本的问题,但我已经在这上面停留了很长时间。我试图将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楼
1克
二楼
2小时

(我尝试使用的方法之一是使用
dplyr
使用:
groupby(df,ColumnB)
,但尝试失败。)

独特的
功能非常适合(没有双关语)解决您的问题:

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

df使用
dplyr
,您希望在对它们进行分组后执行操作;分组本身不会折叠行。您可以使用
summary()
计算某些内容,根据变量在组中选择一行,等等。下面是使用
slice()
选择每个组组合中的第一条记录的示例:

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

您也可以尝试复制

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

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

谢谢Sam的回答——如果必须对多行进行分组,是否有一种有效的方法可以一次对每一行进行分组?您的问题是关于分组变量(列)还是子组中的行?如果要在子组中选择其他行或多行,可以编辑上面的最后一行;如果您想按多个列分组,而不想将它们键入,可以将它们作为变量传递:@jlw没问题。很高兴帮助你