【问题标题】:Create table from acast function ouput [r]从成本函数输出 [r] 创建表
【发布时间】:2020-07-26 12:03:25
【问题描述】:

我想从 reshape2 包中的 acast 函数创建一个表。 我在这里提供了示例,我需要“手动”创建结果,我需要知道 R 中是否有这样做的函数。

library(tidyverse)
library(reshape2)

mtcars %>% 
  head(6) %>% 
  add_rownames(var = "Names") %>% 
  acast(Names ~ gear)

# What I want to create is 
tibble(
  `3` = c("Hornet 4 Drive", "Hornet Sportabout", "Valiant"),
  `4` = c("Datsun 710", "Mazda RX4", "Mazda RX4 Wag"))

【问题讨论】:

    标签: r tidyverse reshape2


    【解决方案1】:

    这可能会完成这项工作:

    head(mtcars) %>% 
      select(gear) %>% 
      rownames_to_column(var = "model") %>% 
      pivot_wider(names_from = gear, values_from = model) %>% 
      apply(2, unlist)
    

    【讨论】:

      【解决方案2】:

      我不确定这是否可行。问题是 tibble 中的列的大小不同。例如,对于完整的 mtcars 数据集,“3”列中将有 15 个元素,而“4”列中将只有 12 个元素。

      【讨论】:

      • 嗨,在这个例子中,第 3 列和第 4 列都有相同数量的元素。在实际数据中,我需要执行此操作,每列总是有相同数量的元素
      【解决方案3】:

      类似于@eugene100hickey 的答案,但使用tidyverse 函数。

      library(tidyverse)
      
      mtcars %>% 
        select(gear) %>% 
        head(6) %>% 
        rownames_to_column(var = "Names") %>%
        pivot_wider(names_from = gear, values_from = Names, values_fn = list) %>%
        unnest(everything())
      
      #   `4`           `3`              
      #  <chr>         <chr>            
      #1 Mazda RX4     Hornet 4 Drive   
      #2 Mazda RX4 Wag Hornet Sportabout
      #3 Datsun 710    Valiant          
      

      【讨论】:

        猜你喜欢
        • 2019-09-10
        • 2020-04-24
        • 2021-04-28
        • 1970-01-01
        • 2020-12-30
        • 2020-11-07
        • 1970-01-01
        • 2020-03-06
        • 1970-01-01
        相关资源
        最近更新 更多