我有一个交易数据集,从2013年1月1日至2016年11月1日有10个客户。我手动为每个客户分割数据集,如下所示,但是我找不到如何创建一个循环来完成它。什么是最好的循环?卡在R中创建循环
customer_1 <- transactions[1:47,]
customer_2 <- transactions[48:94,]
customer_3 <- transactions[95:141,]
customer_4 <- transactions[142:188,]
customer_5 <- transactions[189:235,]
customer_6 <- transactions[236:282,]
customer_7 <- transactions[283:329,]
customer_8 <- transactions[330:376,]
customer_9 <- transactions[377:423,]
customer_10 <- transactions[424:468,]
许多用于按组操作数据帧的选项。 'dplyr'包中的'group_by()'函数是一个很好的开始。使用base R,可以使用'split()'函数或'tapply()'。或者data.table包有一个'by'参数。看到这个问题的想法https://stackoverflow.com/q/11562656/134830 –
虽然它可以使用索引向量迭代地分割数据和'assign'动态创建变量,我认为这是一个更好的想法将其分解成data.frames列表(https://stackoverflow.com/questions/17499013/how-do-i-make-a-list-of-data-frames/24376207#24376207)或(作为@RichieCotton建议)保持一个框架和工作组。 – r2evans
out < - split(transactions,f = transactions $ customer_id)会给你一个元素列表,每个元素将包含来自一个客户的所有交易 –