r - 除了names_from和values_from之外,pivot_wider是否还需要任何其他信息

标签 r dataframe dplyr tidyverse tidyr

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

除了 names_fromvalues_from 之外,pivot_wider() 还需要其他信息吗?

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.tablerowid 创建>

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)

关于r - 除了names_from和values_from之外,pivot_wider是否还需要任何其他信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66079984/

相关文章:

r - 如何在没有数据或仅使用预测系数的情况下保存 glm 结果?

r - 与另一列中的变量相比,如何找到 R 列中两两变量之间的共同变量数?

r - group_by 总计汇总值

r - 有在R窗口中显示文本的功能吗?

r - 在滚动连接上通过引用添加列

python - 返回所有或特定列的频率计数的函数

python - 如何以Python方式返回不同的数据框列计算

R dplyr 根据多个选定列的条件过滤行

r - 如果按特定顺序包含多个变量,则进行子集化

javascript - 在 x = 0 时执行 Math.pow(10,x) 时使用 javascript 更改 R Shiny 错误中的 noUIslider 标签