我有数据集DATA1(我在这里提供修剪版本的数据),其中有customer_id和预订(三种不同类型的预订由1,2,3表示。
我想创建一个新表格输出此表格,其中包含客户ID和Type1预订频率,此处用1表示。
Customer_ID Booking 1 1 2 2 2 1 2 2 3 2 3 1 3 2 3 3 3 1 4 2 4 3
必需输出
Customer_ID Frequency_Type1 1 1 2 1 3 2 4 0
答案 0 :(得分:2)
由于您只是在查看频率,因此您应该能够使用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"])
。
答案 1 :(得分:0)
我们可以使用xtabs
来计算频率
xtabs(Booking~Customer_ID, df[df$Booking ==1, ])
#Customer_ID
#1 2 3 4
#1 1 2 0
另一个基础R解决方案是将Customer_ID
转换为factor
,然后仅对table
等于1的行使用Booking
。
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