【发布时间】: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 的方法,因为它使用命名参数。