用R中另一列的分组值进行计数来创建一个新的数据框

下车

我有一份产品清单,以及以数据框形式购买这些产品的客户

client product
001 pants
001 shirt
001 pants
002 pants
002 shirt
002 shoes

我需要在tuplas中重新订购产品,并在第三列中添加购买这两种产品的客户数量。解决方案将是两个不同的表,一个具有唯一的客户,另一个具有总购买的元组。因此,在前面的示例中,结果将是:

product1 product2 count
pants shirt 2
pants shoes 1
shirt shoes 1

product1 product2 count
pants shirt 3
pants shoes 1
shirt shoes 1

我想避免信息重复。例如,不需要“衬衫裤子2”。

有人知道该怎么做吗?

谢谢!

索托斯

这可能不是最有效的方法,也不是最优雅的方法,但是它可以满足您的需求。假设您的初始列名称是“客户”和“产品”,

library(stringr)
Count.Sales <- function(df){
df3 <- as.data.frame(t(combn(paste0(df$client, df$product), 2)))
df4 <- as.data.frame(table(df3[str_extract(df3$V1, '[[:digit:]]+') == str_extract(df3$V2, '[[:digit:]]+'),]))
df4 <- subset(df4, df4$Freq > 0)
df4$customer <- str_extract(df4$V1, '[[:digit:]]+')
df4[, !(colnames(df4) %in% c("Freq","customer"))] <- apply(df4[, !(colnames(df4) %in% c("Freq","customer"))], 2, function(i) sub('[[:digit:]]+', '', i))
new.df<- within(df4, rm(Freq))
new.df[] <- lapply(new.df, as.character)
r1 <- apply(new.df[,-3], 1, function(i)any(i[-1] != i[1]))
new.df <- new.df[r1,]
new.df$pairs <- do.call(paste, c(new.df[,-3], ' '))
new.df$pairs <- vapply(new.df$pairs, function(i) paste(sort(strsplit(i, ' ')[[1]]), collapse=' '), ' ')
t4 <- data.frame(with(new.df, table(pairs, customer)))
t4  <- t4[t4$Freq != 0,]
per_customer <- as.data.frame(table(t4$pairs))
total <- as.data.frame(table(new.df$pairs))
ls1 <- list(per_customer, total)
names(ls1) <- c('Unique.Customer', 'Total')
return(ls1)
}
Count.Sales(df)
#$Unique.Customer
#          Var1 Freq
#1  pants shirt    2
#2  pants shoes    1
#3  shirt shoes    1
#
#$Total
#          Var1 Freq
#1  pants shirt    3
#2  pants shoes    1
#3  shirt shoes    1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

熊猫-创建一个新列,在另一列中填充观察值

来自分类Dev

R:使用来自另一个数据框的映射在一个数据框中创建一个新列

来自分类Dev

R:从数据框中的一列返回一个值,该值对应于另一列中的最小值

来自分类Dev

用Pandas Python中另一个数据框中的另一列的索引更新数据框中的一列

来自分类Dev

根据另一列中的值创建一个计数连续变量

来自分类Dev

基于R中另一列的值进行计数

来自分类Dev

创建一个基于R中的另一列对从一列中提取的字符串文本进行分组的列

来自分类Dev

数据框,使用基于另一列索引的值创建一个新列

来自分类Dev

R. n另一列的数据框中的前一个元素

来自分类Dev

在Dataframe中对列进行分组,并使用分组的数据创建另一个数据框

来自分类Dev

我将如何创建一个具有aa列的唯一值并对其进行计数的新数据框?

来自分类Dev

使用R数据框中的值对另一个数据框的列进行规范化

来自分类Dev

在我的数据框中添加一个计数器列,该列根据温度值递增(在另一列中)

来自分类Dev

在R中另一数据框中的另一列的基础上在一个数据框中创建一列

来自分类Dev

对R中数据框的一列进行计数

来自分类Dev

Python:在数据框中,创建一个新列,并使用从另一列的值中切出的字符串

来自分类Dev

R:如何创建一个基于另一列某些值的新列?

来自分类Dev

通过另一列的分组值的总和对pandas数据框中的列进行归一化

来自分类Dev

R:创建新的数据框行是来自另一个数据框的列

来自分类Dev

将熊猫数据框列中的单词按另一列分组以获得频率/计数

来自分类Dev

根据 Pandas 中另一列中相似值的分组创建一个新列

来自分类Dev

pandas 数据框创建一个新列,其值基于另一列上的 groupby sum

来自分类Dev

如果前两列都匹配,则将数据框的一列中的值添加到另一个数据框的新列中

来自分类Dev

r 创建与按另一列分组的行元素匹配的新数据框

来自分类Dev

根据另一列 R 中的条件创建一个新列

来自分类Dev

根据熊猫中另一列上的值在数据框中创建一个新列

来自分类Dev

创建一个函数来接收 R 中的数据框名称和列

来自分类Dev

根据一列中的条件创建一个新的熊猫列,并从同一数据框中的多列中分配值

来自分类Dev

根据熊猫数据框中另一列的最后一个值填充列

Related 相关文章

  1. 1

    熊猫-创建一个新列,在另一列中填充观察值

  2. 2

    R:使用来自另一个数据框的映射在一个数据框中创建一个新列

  3. 3

    R:从数据框中的一列返回一个值,该值对应于另一列中的最小值

  4. 4

    用Pandas Python中另一个数据框中的另一列的索引更新数据框中的一列

  5. 5

    根据另一列中的值创建一个计数连续变量

  6. 6

    基于R中另一列的值进行计数

  7. 7

    创建一个基于R中的另一列对从一列中提取的字符串文本进行分组的列

  8. 8

    数据框,使用基于另一列索引的值创建一个新列

  9. 9

    R. n另一列的数据框中的前一个元素

  10. 10

    在Dataframe中对列进行分组,并使用分组的数据创建另一个数据框

  11. 11

    我将如何创建一个具有aa列的唯一值并对其进行计数的新数据框?

  12. 12

    使用R数据框中的值对另一个数据框的列进行规范化

  13. 13

    在我的数据框中添加一个计数器列,该列根据温度值递增(在另一列中)

  14. 14

    在R中另一数据框中的另一列的基础上在一个数据框中创建一列

  15. 15

    对R中数据框的一列进行计数

  16. 16

    Python:在数据框中,创建一个新列,并使用从另一列的值中切出的字符串

  17. 17

    R:如何创建一个基于另一列某些值的新列?

  18. 18

    通过另一列的分组值的总和对pandas数据框中的列进行归一化

  19. 19

    R:创建新的数据框行是来自另一个数据框的列

  20. 20

    将熊猫数据框列中的单词按另一列分组以获得频率/计数

  21. 21

    根据 Pandas 中另一列中相似值的分组创建一个新列

  22. 22

    pandas 数据框创建一个新列,其值基于另一列上的 groupby sum

  23. 23

    如果前两列都匹配,则将数据框的一列中的值添加到另一个数据框的新列中

  24. 24

    r 创建与按另一列分组的行元素匹配的新数据框

  25. 25

    根据另一列 R 中的条件创建一个新列

  26. 26

    根据熊猫中另一列上的值在数据框中创建一个新列

  27. 27

    创建一个函数来接收 R 中的数据框名称和列

  28. 28

    根据一列中的条件创建一个新的熊猫列,并从同一数据框中的多列中分配值

  29. 29

    根据熊猫数据框中另一列的最后一个值填充列

热门标签

归档