我想使用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)
}
aggregate
将相同的函数应用于多个单个列。如果您想处理列的集合,那么使用这个范例:lapply(split(df,group),function)
试试这个:
听起来python可能与实验包dplyr有一些相似之处。在某种意义上,
aggregate
只是块内面向列的处理策略,而lapply(split, ), )
策略在您对由块标准定义的整行数据感兴趣时更适用。如果以后要将这些结果行绑定在一起,可以始终使用do.call(rbind, res_from_lapply)
。你知道吗相关问题 更多 >
编程相关推荐