您如何为另一个 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
如果需要,这还会给出行的逻辑索引。
这是一个初级问题,但我已经卡了好久了。我正在尝试对 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
如果需要,这还会给出行的逻辑索引。