如何在一列中为另一个R中的每个唯一值分组值?
这是一个基本的问题,但我已经在这上面停留了很长时间。我试图将ColumnB中的值分组,但仅限于ColumnA中的每个值 初始数据帧类似于:如何在一列中为另一个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),但尝
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没问题。很高兴帮助你