首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reshape2:从长到宽的data.frame

Reshape2:从长到宽的data.frame
EN

Stack Overflow用户
提问于 2015-11-11 00:21:30
回答 1查看 305关注 0票数 0

我需要帮助把长df转换成宽df。

我想这是个基本的问题,但我被塞了进去。

在阅读了关于“重塑2”的文章之后,我使用了以下这些:

代码语言:javascript
复制
dcast(a,  day + sessions ~ hour)

以及所有可能的变化。

但没有得到预期的结果。

这是我的起始数据框架"a":

总目(A)

代码语言:javascript
复制
  day  hour  sessions
1 Sun    0      785
2 Sun    1      354
3 Sun    2      190
4 Sun    3      121
5 Sun    4      105
6 Sun    5      110

预期结果:我需要这种格式:

代码语言:javascript
复制
  day    0       1    2    3     ... 23
1 Sun    123    454   23   43    ... 56
2 Mon    56     354   778  76    ....89
3 Thur   75     190   653  533   ....87
4 Wen    3      121   45    54   ....77
5 Tue    4      105   21   44    ....52
6 Fri    5      110   12   21    ....51

df“a”级代表:

代码语言:javascript
复制
'data.frame':   168 obs. of  3 variables:
 $ day     : Ord.factor w/ 7 levels "Sun"<"Mon"<"Tues"<..: 1 1 1 1 1 1 1 1 1 1 ...
 $ hour    : Factor w/ 24 levels " 0"," 1"," 2",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ sessions: num  785 354 190 121 105 110 185 258 252 416 ...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-11 01:36:51

正如注释中提到的@ialm,使用reshape2包很容易做到这一点。

我不知道您的dataframe到底是什么样子,因为您的例子有点奇怪,但是:

代码语言:javascript
复制
library(reshape2)

a <- data.frame(
day = c('Sun', 'Sun', 'Mon', 'Mon'), 
hour = c(1, 2, 1, 2),
sessions = c(354, 190, 121, 105))

dcast(a, day ~ hour)

...should给你

代码语言:javascript
复制
  day   1   2
1 Mon 121 105
2 Sun 354 190
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33642177

复制
相关文章

相似问题

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