pivot_wider 是否需要 names_from 和 values_from 以外的任何其他信息

Does pivot_wider need any other info than names_from and values_from

我想知道为什么我下面的 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)

我们需要一个序列来说明 'weight' 中的重复元素。它可以使用 group_by(group) %>% mutate(rn = row_number()) 或更容易地从 data.table

rowid 创建
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)