创建按标识列分组的列中出现的唯一值的集合(字符串)变量
Create Set (String) variable of unique values occuring in a Column grouped by Identification Column
df <- data.frame(ID=c("1", "1", "2", "2", "3", "3", "4", "4", "4", "4"), Product=c("A", "B", "B", "A", "C", "C", "A", "B", "C", "C"))
我想获得一组按列 'ID' 分组的列 'Product' 的值。
Set 应该是由逗号分隔的字符串。它应该表示一个字符串值,其中产品值的每个可能组合只出现一次。
结果是唯一的 ID 值和产品值的可能组合,没有值重复。
我的成功方法是:
library(dplyr)
df2<-df %>% group_by(ID) %>% summarise(Set = toString(unique(Product)))
输出:
编号集
(fctr) (字符)
1个甲乙
2乙,甲
3C
4 甲、乙、丙
输出是一个字符串变量 Set,它具有变量 Product 的值的组合,但是它们可以重复自身,即 A, B != B, A,这是不受欢迎的。
我想使用一个函数来让我的工作流程获得一个 Set 变量,其中 A、B = B、A 等,因此产品频率也将因此匹配不同的规则。
预期输出:
ID Set (fctr) (chr) 1 A, B 2 A, B 3 C 4 A, B, C 所以当我进行汇总统计时,它会显示值 A,B 在数据集中 2x(与 A 相比, B 1 次 B、A 1 次)
谁知道?
我们可以在每个 'ID'
之间使用 sort
到 sort
'Product'
df %>%
group_by(ID) %>%
summarise(Product = toString(unique(sort(Product))))
# ID Product
# (fctr) (chr)
#1 1 A, B
#2 2 A, B
#3 3 C
#4 4 A, B, C
另一种使用 data.table
语法的方法是
library(data.table)
setDT(df)[, list(Product = toString(unique(sort(Product)))) , by = ID]
或 base R
aggregate(Product~ID, df,FUN= function(x) toString(unique(sort(x))))
df <- data.frame(ID=c("1", "1", "2", "2", "3", "3", "4", "4", "4", "4"), Product=c("A", "B", "B", "A", "C", "C", "A", "B", "C", "C"))
我想获得一组按列 'ID' 分组的列 'Product' 的值。 Set 应该是由逗号分隔的字符串。它应该表示一个字符串值,其中产品值的每个可能组合只出现一次。 结果是唯一的 ID 值和产品值的可能组合,没有值重复。
我的成功方法是:
library(dplyr)
df2<-df %>% group_by(ID) %>% summarise(Set = toString(unique(Product)))
输出: 编号集 (fctr) (字符) 1个甲乙 2乙,甲 3C 4 甲、乙、丙
输出是一个字符串变量 Set,它具有变量 Product 的值的组合,但是它们可以重复自身,即 A, B != B, A,这是不受欢迎的。 我想使用一个函数来让我的工作流程获得一个 Set 变量,其中 A、B = B、A 等,因此产品频率也将因此匹配不同的规则。
预期输出: ID Set (fctr) (chr) 1 A, B 2 A, B 3 C 4 A, B, C 所以当我进行汇总统计时,它会显示值 A,B 在数据集中 2x(与 A 相比, B 1 次 B、A 1 次)
谁知道?
我们可以在每个 'ID'
之间使用sort
到 sort
'Product'
df %>%
group_by(ID) %>%
summarise(Product = toString(unique(sort(Product))))
# ID Product
# (fctr) (chr)
#1 1 A, B
#2 2 A, B
#3 3 C
#4 4 A, B, C
另一种使用 data.table
语法的方法是
library(data.table)
setDT(df)[, list(Product = toString(unique(sort(Product)))) , by = ID]
或 base R
aggregate(Product~ID, df,FUN= function(x) toString(unique(sort(x))))