我正在尝试找到处理数据的最佳方法(在数据帧调用x
中)。我目前正在编写一个函数,该函数将使用Cust_ID
变量group_by
并计算该Cust_ID和ID_code的平均价格。
我目前正在做的是y
并生成一个稀疏矩阵,并且ID_code
与稀疏矩阵匹配的情况下,1
都会实现到单元格中。 (类似于伪变量/一键编码,但我的唯一列多于唯一的ID_code
。)
y
创建的列更加独特,比x$ID_code
(包含8001:8005
)中的观察更为独特。
首先计算mean Price
,其次生成y
序列。第三,创建由zero
和ones
填充的矩阵。最后,将原始数据x
与新创建的matrix
绑定在一起。
x <- x %>%
group_by(Cust_ID, ID_code) %>%
mutate(mean_cust_price = mean(price)) %>%
ungroup()
y <- seq(8000:8010)
y <- y + 8000
y <- as.data.frame(y)
##############################################################################
matrixDATA <- matrix(y$y, byrow = TRUE,
nrow = length(x$ID_code),
ncol = length(y$y),
dimnames = list(1:nrow(x), y$y))
for(i in 1:ncol(matrixDATA)){
matrixDATA[, i] <- matrixDATA[, i] == as.integer(x$ID_code)
}
x_clean <- cbind(x, matrixDATA)
##############################################################################
这部分全部按我的期望和预期工作。但是,我想合并mean_cust_price
变量。创建新的稀疏矩阵不是此连续变量的正确方法,但我总结了如何显示(机器学习模型)当ID_code = 8002
和Cust_ID = 11
时,平均价格为p {{1 }}。
我只是在努力思考如何将其提供给ML模型。
例如:
我的原始数据如下:
982212.963
我有# A tibble: 200 x 4
Cust_ID ID_code price mean_cust_price
<dbl> <dbl> <dbl> <dbl>
1 11.0 8002 365000 982213
2 11.0 8004 193000 355850
3 11.0 8003 690000 532776
4 11.0 8004 195000 355850
5 11.0 8003 558000 532776
6 10.0 8004 900 1100
7 10.0 8002 1200 1189
8 11.0 8003 1100000 532776
9 11.0 8004 480000 355850
10 11.0 8001 295000 377793
这样的分类变量,我ID_code
进入了矩阵。
最终数据如下:
spread
因此,我可以表示 Cust_ID ID_code price mean_cust_price 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010
1 11 8002 365000 982213.0 0 1 0 0 0 0 0 0 0 0
2 11 8004 193000 355850.0 0 0 0 1 0 0 0 0 0 0
3 11 8003 690000 532775.8 0 0 1 0 0 0 0 0 0 0
4 11 8004 195000 355850.0 0 0 0 1 0 0 0 0 0 0
8011
1 0
2 0
3 0
4 0
变量,但我也想展示Cust_ID
变量,因为取决于mean_cust_price
和Cust_ID
的数字变化很大。
我怎样才能最好地代表这一点?
当前格式可以以稀疏矩阵格式输入到ML模型中(在删除ID变量和Price之后)。
数据:
ID_code