返回矩阵时在R中使用聚合

2024-10-02 08:30:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用aggregate对一组矩阵应用一些操作,这些矩阵按customer_id分组,这是我的数据帧df的一列。你知道吗

例如,我想获取df的子集,它们对应于不同的customer_id,并向这些子集添加一些列,然后全部返回。你知道吗

在Python中,我将使用groupby和apply。你知道吗

我在R怎么做?你知道吗

我写的代码如下:

gr_TILPS = aggregate(df,by=list(df[,"customer_id"]),FUN=kmeansfunction)

Error in TILPSgroup$hour : $ operator is invalid for atomic vectors

我猜错误来自kmeans函数,它看起来像:

kmeansfunction = function(dfgroup){

Hour =dfgroup$hour
Weekday =TILPSgroup$WeekdayPrime
x <- cbind(Hour, Weekday)
colnames(x) <- c("x", "y")
(cl <- kmeans(x, 2))
clusters = cl$cluster
origclusters = as.factor(clusters)
dfgroup = cbind(dfgroup,origclusters)

return(dfgroup) 

}


Tags: iddfcl矩阵customer子集aggregatekmeans
1条回答
网友
1楼 · 发布于 2024-10-02 08:30:06

aggregate将相同的函数应用于多个单个列。如果您想处理列的集合,那么使用这个范例:lapply(split(df,group),function)

试试这个:

gr_TILPS <- lapply( split(df, df[,"customer_id"]),
                    FUN=kmeansfunction)

听起来python可能与实验包dplyr有一些相似之处。在某种意义上,aggregate只是块内面向列的处理策略,而lapply(split, ), )策略在您对由块标准定义的整行数据感兴趣时更适用。如果以后要将这些结果行绑定在一起,可以始终使用do.call(rbind, res_from_lapply)。你知道吗

相关问题 更多 >

    热门问题