首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的分组和分割数据帧

问R中的分组和分割数据帧
EN

Stack Overflow用户
提问于 2015-07-27 09:01:28
回答 1查看 58关注 0票数 0

下面是促销销售表,列出产品和促销活动在什么时间进行的组。

代码语言:javascript
复制
   Product.code  cgrp promo.from   promo.to
1    1100001369    12 2014-01-01 2014-03-01
2    1100001369 16 37 2014-01-01 2014-03-01
3    1100001448    12 2014-03-01 2014-03-01
4    1100001446    12 2014-03-01 2014-03-01
5    1100001629 11 30 2014-03-01 2014-03-01
6    1100001369 16 37 2014-03-01 2014-06-01
7    1100001368    12 2014-06-01 2014-07-01
8    1100001369    12 2014-06-01 2014-07-01
9    1100001368 11 30 2014-06-01 2014-07-01
10   1100001738 11 30 2014-06-01 2014-07-01
11   1100001629 11 30 2014-06-01 2014-06-01
12   1100001738 11 30 2014-07-01 2014-07-01
13   1100001619 11 30 2014-08-01 2014-08-01
14   1100001619 11 30 2014-08-01 2014-08-01
15   1100001629 11 30 2014-08-01 2014-08-01
16   1100001738    12 2014-09-01 2014-09-01
17   1100001738 16 37 2014-08-01 2014-08-01
18   1100001448    12 2014-09-01 2014-09-01
19   1100001446    12 2014-10-01 2014-10-01
20   1100001369    12 2014-11-01 2014-11-01
21   1100001547 16 37 2014-11-01 2014-11-01
22   1100001368 11 30 2014-11-01 2014-11-01

我试图分组的product.code和cgrp,以便我可以知道所有的促销产品在一个特定的小组,并做进一步的分析。

我试着把整个data.frame循环起来。没有效率也没问题。

做这件事的有效方法是什么?

编辑以获得多个data.frame,如下所示

x=

代码语言:javascript
复制
   Product.code  cgrp promo.from   promo.to
3    1100001448    12 2014-03-01 2014-03-01
18   1100001448    12 2014-09-01 2014-09-01

y=

代码语言:javascript
复制
   Product.code  cgrp promo.from   promo.to
1    1100001369    12 2014-01-01 2014-03-01
8    1100001369    12 2014-06-01 2014-07-01
20   1100001369    12 2014-11-01 2014-11-01
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-27 10:06:12

您可以split 'cgrp‘列,并使用cSplit将数据集重塑为'long’格式。然后,将dataset ('df1')通过'Product.code‘和'cgrp’创建一个list ('lst')。

代码语言:javascript
复制
 library(splitstackshape)
 df1 <- as.data.frame(cSplit(df, 'cgrp', ' ', 'long'))
 lst <- split(df1, list(df1$Product.code, df1$cgrp), drop=TRUE)
 names(lst) <- paste0('dfN', seq_along(lst))

最好将数据集保存在list中。但是,如果您希望在全局环境中作为单独的对象,一个选项是list2env (不推荐)。

代码语言:javascript
复制
 list2env(lst, envir=.GlobalEnv)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31648909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档