根据行中相同数据的唯一 ID 和频率创建新数据集



我有数据集DATA1(我在这里提供数据的修剪版本(,它有customer_id和那里的预订(三种不同类型的预订用1,2,3表示。

我想从这个表中制作一个新表输出,该表将具有客户 ID 和 Type1 预订的频率,此处用 1 表示。

Customer_ID预订1   12   22   12   23   23   13   23   33   14   24   3

所需输出为

Customer_ID Frequency_Type11   12   13   24   0

由于您只是在查看频率,因此您应该只能使用table

例:

table(mydf)
##            Booking
## Customer_ID 1 2 3
##           1 1 0 0
##           2 1 2 0
##           3 2 2 1
##           4 0 1 1

然后,如果您只想要第一列,您可以执行以下操作:

table(mydf)[, "1"]
## 1 2 3 4 
## 1 1 2 0 

这将为您提供一个命名向量。如果你想把它作为一个data.frame,你可以stack它,如果需要,重命名列:

stack(table(mydf)[, "1"])
##   values ind
## 1      1   1
## 2      1   2
## 3      2   3
## 4      0   4

或者,您可以更详细并使用 with(mydf, table(Customer_ID, Booking == 1)[, "TRUE"]) .

我们可以使用xtabs来计算频率

xtabs(Booking~Customer_ID, df[df$Booking ==1, ])
#Customer_ID
#1 2 3 4 
#1 1 2 0 

另一个基本 R 解决方案是将Customer_ID转换为 factor,然后仅在 Booking 等于 1 的行上使用 table

df$Customer_ID <- as.factor(df$Customer_ID)
table(df[df$Booking ==1, ])
#          Booking
#Customer_ID 1
#          1 1
#          2 1
#          3 2
#          4 0

最新更新