【问题标题】:Resizing a R dataframe on the base of the column content [duplicate]根据列内容调整R数据框的大小[重复]
【发布时间】:2022-01-08 23:04:52
【问题描述】:

我有一个相当大的数据框,其结构如下:

     Date         Item size       
[1,] "2021-01-04" "AA" "23.25"    
[2,] "2021-01-05" "AA" "23.67"    
[3,] "2021-01-06" "AA" "25.20"
[4,] "2021-01-04" "BB" "31.21"    
[5,] "2021-01-05" "BB" "33.27"    
[6,] "2021-01-06" "BB" "35.20"
[7,] "2021-01-04" "CC" "13.25"    
[8,] "2021-01-05" "CC" "13.61"    
[9,] "2021-01-06" "CC" "15.20"

等等

我希望它按以下方式重新格式化:

     Date         AA        BB      CC      
[1,] "2021-01-04" "23.25"   "31.21" "13.25"     
[2,] "2021-01-05" "23.67"   "33.27" "13.61" 
[3,] "2021-01-06" "25.20"   "35.20" "15.20" 

因此,对于“项目”列(“AA”、“BB”、“CC”)中出现的所有不同情况,应使用该名称创建一个新列,并包含“大小”中报告的所有值该项目的列。 “项目”列中不同出现的次数始终相同(三个“AA”、三个“BB”、三个“CC”)。 如前所述,我的数据框相当大(数百万行),但为了安全起见,我使用了这个代表性示例。 任何帮助或指针将不胜感激。

【问题讨论】:

标签: r dataframe


【解决方案1】:

使用tidyr::pivot_wider

library(tidyr)
df %>% pivot_wider(names_from = Item, values_from = size)

# A tibble: 3 x 4
  Date          AA    BB    CC
  <chr>      <dbl> <dbl> <dbl>
1 2021-01-04  23.2  31.2  13.2
2 2021-01-05  23.7  33.3  13.6
3 2021-01-06  25.2  35.2  15.2

【讨论】:

    猜你喜欢
    • 2014-02-21
    • 2010-11-02
    • 1970-01-01
    • 2014-01-06
    • 2014-04-29
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多