首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据R中的关键字列表中的关键字将较大的数据帧分成较小的数据帧

根据R中的关键字列表中的关键字将较大的数据帧分成较小的数据帧
EN

Stack Overflow用户
提问于 2020-05-12 22:30:02
回答 3查看 36关注 0票数 1

我被一项任务卡住了很长一段时间。我有一个数据帧,它由不同的关键字和单元组成,每个关键字和单元跨越数周。我需要将这个数据帧分成较小的数据帧块,每个帧由具有相同关键字的值组成,以便这个较大的数据帧成为一个数据帧列表。

例如,假设较大的数据帧为

代码语言:javascript
复制
KEY UNITS   WEEK    YEAR
A-1  42      2      2019
A-1  24      3      2019
A-1  29      5      2019
A-1  36      6      2019
A-2  27      2      2019
A-2  46      3      2019
A-2  44      4      2019
B-1  53      2      2019
B-1  31      4      2019
B-1  25      5      2019
B-1  52      6      2019
B-1  30      8      2019
B-2  46      2      2019
B-2  38      3      2019
B-2  36      4      2019

我想将这个数据帧分解成一个数据帧列表,其中关键字在每个单独的数据帧中保持唯一,如下所示:

代码语言:javascript
复制
KEY UNITS   WEEK    YEAR        KEY UNITS   WEEK    YEAR        KEY UNITS   WEEK    YEAR
A-1  30      2      2019        A-2  43      2      2019        B-1  24      2      2019
A-1  43      3      2019        A-2  54      3      2019        B-1  47      4      2019
A-1  25      5      2019        A-2  54      4      2019        B-1  53      5      2019
A-1  29      6      2019                                        B-1  25      6      2019

代码语言:javascript
复制
KEY UNITS   WEEK    YEAR
B-1 41       8      2019
B-2 54       2      2019
B-2 44       3      2019
B-2 33       4      2019

并获得所有这些数据帧作为数据帧列表。

现在我试着使用下面的代码片段来做,但是它有性能问题,因为我的唯一键的数量非常大:

代码语言:javascript
复制
ds1<-list()
for (j in 1:num_of_unique_keys)
{
 ds1[[j]]<-subset(dataset, dataset$KEY==extkeys[j])
}
head(ds1[[2]])

这里'num_of_unique_keys‘是在较大的数据帧中有多少唯一关键字的总计数,' dataset’是我正在处理的数据集,‘extkey’是数据集中唯一关键字的列表,'ds1‘是我想要作为输出获得的数据帧列表。我知道性能问题主要是因为for循环,这在R中是不可行的,但我就是找不到另一个有效的方法来解决这个问题。

如果能帮上忙我会很感激的。

EN

Stack Overflow用户

回答已采纳

发布于 2020-05-12 22:32:38

在Base-R中

代码语言:javascript
复制
split(dataset, dataset$KEY)

输出:

代码语言:javascript
复制
$`A-1`
  KEY UNITS WEEK YEAR
1 A-1    42    2 2019
2 A-1    24    3 2019
3 A-1    29    5 2019
4 A-1    36    6 2019

$`A-2`
  KEY UNITS WEEK YEAR
5 A-2    27    2 2019
6 A-2    46    3 2019
7 A-2    44    4 2019

$`B-1`
   KEY UNITS WEEK YEAR
8  B-1    53    2 2019
9  B-1    31    4 2019
10 B-1    25    5 2019
11 B-1    52    6 2019
12 B-1    30    8 2019

$`B-2`
   KEY UNITS WEEK YEAR
13 B-2    46    2 2019
14 B-2    38    3 2019
15 B-2    36    4 2019
票数 4
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61754363

复制
相关文章

相似问题

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