簡體   English   中英

Reshape2:data.frame從長到寬

[英]Reshape2: data.frame from long to wide

我需要將長df轉換為寬df的幫助。

我認為這是一個基本問題,但我被困住了。

閱讀有關“ reshape2”的信息后,我使用了以下方法:

dcast(a,  day + sessions ~ hour)

以及所有可能的變化。

但是沒有得到預期的結果。

這是我的起始數據框“ a”:

頭(a)

  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

預期結果:我需要使用以下格式:

  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”的str:

'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 ...

正如@ialm在評論中提到的那樣,這可以通過使用reshape2包輕松完成。

我不知道您的數據框的真正外觀,因為您的示例有點奇怪,但是:

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)

...應該給你

  day   1   2
1 Mon 121 105
2 Sun 354 190

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM