Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将排列()替换为枢轴_加宽()_R_Dplyr - Fatal编程技术网

R 将排列()替换为枢轴_加宽()

R 将排列()替换为枢轴_加宽(),r,dplyr,R,Dplyr,我有一个数据集,我正在用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,hip

我有一个数据集,我正在用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 
按genre差异选择
#一个tibble:3x4
体裁男女体裁差异
1个国家0.786 0.392 0.394
2人声0.880 1.57 0.688
3岩石1.93 3.06 1.13
我希望获得相同的输出,但将spread()函数替换为pivot_wider()(我相信这就是要使用的函数)。然而,我不知道怎么做

谢谢大家!

注:这是我的数据集,如果您感兴趣:

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

hiphop基于dropbox输入数据,一些步骤已经完成。我们可以通过使用
选择帮助程序
使某些步骤更加紧凑,即,如果我们有一系列列要选择,请使用
,类似地,在
pivot\u longer
中,我们还可以使用
-
指定不选择的列。使用
pivot\u wide
,确保指定参数(
names\u from
values\u 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 
库(dplyr)
图书馆(tidyr)
嘻哈%>%
按性别划分的组别%>%
总结(变量(国际:不可分类),平均值)%>%
pivot_更长(cols=-性别)%>%
pivot\u更宽(姓名\u from=sex,值\u from=value)%>%
突变(基因差异=abs(雌雄))%>%
排列(基因差异)%>%
顶部(3)
#一个tibble:3x4
#姓名男女性别差异
#                  
#1个国家0.786 0.392 0.394
#2人声0.880 1.57 0.688
#3岩石1.93 3.06 1.13

您可以更改
排列
。若要将
pivot\u加宽(names\u from=sex,values\u from=value)
您也可以将
spread(…)
更改为
pivot\u加宽(genre,sex)
,但我更喜欢@akrun的方法,因为它使用命名参数。