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

时间:2017-03-17 04:18:44

标签: r

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

2 个答案:

答案 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