【问题标题】:Replacing spread() with pivot_wider()用 pivot_wider() 替换 spread()
【发布时间】:2020-01-21 22:28:55
【问题描述】:

我有一个正在使用 dplyr 包在 R 中处理和编辑的数据集。我的代码是:

    hiphop%>%
  mutate( sex = 
    case_when(
      sex == 1 ~ "female",
      sex == 0 ~ "male"
    )
  )%>%
  group_by(sex)%>%
  summarise_at(vars(intl,vocal,classical,folk,rock,country,pop,alternative,hiphop,unclassifiable),funs(mean))%>%
  pivot_longer(c(intl,vocal,classical,folk,rock,country,pop,alternative,hiphop,unclassifiable),names_to = "genre")%>%
spread(sex,value)%>%
  mutate(
    genredifference = abs(female-male)
  )%>%
  arrange(genredifference)%>%
  top_n(3)

我在哪里得到这个输出:

Selecting by genredifference
# A tibble: 3 x 4
  genre   female  male genredifference
  <chr>    <dbl> <dbl>           <dbl>
1 country  0.786 0.392           0.394
2 vocal    0.880 1.57            0.688
3 rock     1.93  3.06            1.13 

我想获得相同的输出,但将 spread() 函数替换为 pivot_wider() (我相信这将是要使用的函数)。但是,我不知道该怎么做。

谢谢!

P.S:这是我的数据集,如果你有兴趣:

hiphop <- read_csv("https://www.dropbox.com/s/5d8fwxrj3jtua1z/hiphop.csv?dl=1")

【问题讨论】:

  • 您可以更改spread。到pivot_wider(names_from = sex, values_from = value)
  • 您也可以将spread(...) 更改为pivot_wider(genre, sex),但我更喜欢@akrun 的方法,因为它使用命名参数。

标签: r dplyr


【解决方案1】:

根据 Dropbox 输入数据,一些步骤已经完成。我们可以通过使用select_helpers 使一些步骤更紧凑,即如果我们要选择一系列列,请使用:,类似地在pivot_longer 中,我们也可以使用- 指定不选择的列。使用pivot_wider,请确保指定参数(names_fromvalues_from),因为还有其他参数,并且不指定参数,它可以按出现顺序匹配参数

library(dplyr)
library(tidyr)
 hiphop %>%  
    group_by(sex)%>%
    summarise_at(vars(intl:unclassifiable), mean) %>%
    pivot_longer(cols = -sex) %>% 
    pivot_wider(names_from = sex, values_from = value) %>%
    mutate(genredifference = abs(Female-Male))%>%
    arrange(genredifference)%>%
    top_n(3)
# A tibble: 3 x 4
#  name    Female  Male genredifference
#  <chr>    <dbl> <dbl>           <dbl>
#1 country  0.786 0.392           0.394
#2 vocal    0.880 1.57            0.688
#3 rock     1.93  3.06            1.13 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 2020-03-07
    • 2019-12-31
    • 2011-09-19
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多