【问题标题】:Does pivot_wider need any other info than names_from and values_from除了 names_from 和 values_from 之外,pivot_wider 是否需要任何其他信息
【发布时间】:2021-02-06 17:46:03
【问题描述】:

我想知道为什么我在下面的 pivot_wider() 调用没有使 my_data 变成宽格式?

pivot_wider() 是否需要除names_fromvalues_from 之外的任何其他信息?

library(tidyverse)

  before <-c(200.1, 190.9, 192.7, 213, 241.4, 196.9, 172.2, 185.5, 205.2, 193.7)
  after <-c(392.9, 393.2, 345.1, 393, 434, 427.9, 422, 383.9, 392.3, 352.2)

  my_data <- data.frame( 
    group = rep(c("before", "after"), each = 10),
    weight = c(before,  after)
  )  

  pivot_wider(my_data, values_from = weight, names_from = group)

【问题讨论】:

    标签: r dataframe dplyr tidyverse tidyr


    【解决方案1】:

    我们需要一个序列来解释“重量”中的重复元素。可以使用group_by(group) %&gt;% mutate(rn = row_number()) 或更轻松地从rowiddata.table 创建它

    library(data.table)
    library(dplyr)
    library(tidyr)
    my_data %>%
        mutate(rn = rowid(group)) %>%
        pivot_wider(values_from = weight, names_from = group) %>%
        select(-rn)
    

    -输出

    # A tibble: 10 x 2
    #   before after
    #    <dbl> <dbl>
    # 1   200.  393.
    # 2   191.  393.
    # 3   193.  345.
    # 4   213   393 
    # 5   241.  434 
    # 6   197.  428.
    # 7   172.  422 
    # 8   186.  384.
    # 9   205.  392.
    #10   194.  352.
    

    base R,我们可以使用unstack

    unstack(my_data, weight ~ group)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 2022-11-19
    相关资源
    最近更新 更多