我有数据集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