gpt4 book ai didi

r - 如何计算数据框每一行的相同值的条目?

转载 作者:行者123 更新时间:2023-12-01 13:59:18 25 4
gpt4 key购买 nike

假设我有一个大型数据框,其中包含订单日期、用户 ID 和商品 ID。

   order_id order_date user_id item_id
1 1 2016-06-22 30822 643
2 2 2016-06-22 30822 337
3 3 2016-06-22 30823 270
4 4 2016-06-22 30823 142
5 5 2016-06-22 30823 561
6 6 2016-06-22 30823 561
7 7 2016-06-22 30823 72
8 8 2016-06-22 30823 106
9 9 2016-06-22 30823 195
10 10 2016-06-22 30823 195

我想做的是计算同一用户在同一天下了多少订单,以及同一用户对同一商品下了多少订单,并在第四列和第五列中显示这两个值。所以结果应该是这样的:

   order_id order_date user_id item_id same_day same_item
1 1 2016-06-22 30822 643 2 1
2 2 2016-06-22 30822 337 2 1
3 3 2016-06-22 30823 270 8 1
4 4 2016-06-22 30823 142 8 1
5 5 2016-06-22 30823 561 8 2
6 6 2016-06-22 30823 561 8 2
7 7 2016-06-22 30823 72 8 1
8 8 2016-06-22 30823 106 8 1
9 9 2016-06-22 30823 195 8 2
10 10 2016-06-22 30823 195 8 2

或者,显示该商品是否被多次订购的二进制变量也可以完成这项工作。我知道可以使用 sum() 轻松计算每一行:

> sum(df$order_date=="2016-06-22" & df$user_id==30823)
[1] 8
> sum(df$item_id==561 & df$user_id==30823)
[1] 2

但我宁愿让它自动运行,而不必为数千个条目手动运行。我的想法真的用完了,非常感谢您的帮助!

最佳答案

library(data.table)
setDT(df)

df[, same_day := .N, by = .(order_date, user_id)]
df[, same_item := .N, by = .(order_date, user_id, item_id)]

df
# order_id order_date user_id item_id same_day same_item
# 1: 1 2016-06-22 30822 643 2 1
# 2: 2 2016-06-22 30822 337 2 1
# 3: 3 2016-06-22 30823 270 8 1
# 4: 4 2016-06-22 30823 142 8 1
# 5: 5 2016-06-22 30823 561 8 2
# 6: 6 2016-06-22 30823 561 8 2
# 7: 7 2016-06-22 30823 72 8 1
# 8: 8 2016-06-22 30823 106 8 1
# 9: 9 2016-06-22 30823 195 8 2
# 10: 10 2016-06-22 30823 195 8 2

或者用 dplyr

library(dplyr)

df <-
df %>%
add_count(order_date, user_id, name = 'same_day') %>%
add_count(order_date, user_id, item_id, name = 'same_item')

df
# # A tibble: 10 x 6
# order_id order_date user_id item_id same_day same_item
# <int> <chr> <int> <int> <int> <int>
# 1 1 2016-06-22 30822 643 2 1
# 2 2 2016-06-22 30822 337 2 1
# 3 3 2016-06-22 30823 270 8 1
# 4 4 2016-06-22 30823 142 8 1
# 5 5 2016-06-22 30823 561 8 2
# 6 6 2016-06-22 30823 561 8 2
# 7 7 2016-06-22 30823 72 8 1
# 8 8 2016-06-22 30823 106 8 1
# 9 9 2016-06-22 30823 195 8 2
# 10 10 2016-06-22 30823 195 8 2

关于r - 如何计算数据框每一行的相同值的条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59862779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com