2017-10-14 95 views
1

几周前我刚刚开始捡起R。我在尝试转换时遇到了一些问题(如果这是正确的R术语?)性别行到列。DPLYR突变函数“transmute”?

> brfss %>% 
    +  filter(hours1 >=1,hours1 <=24) %>% 
    +  group_by(hours1, gender) %>% 
    +  summarise(count = n()) 
    # A tibble: 48 x 3 
    # Groups: hours1 [?] 
     hours1 gender count 
      <int> <fctr> <int> 
    1  1 Male 96 
    2  1 Female 132 
    3  2 Male 464 
    4  2 Female 612 
    5  3 Male 1433 
    6  3 Female 2063 
    7  4 Male 5749 
    8  4 Female 8512 
    9  5 Male 13231 
    10  5 Female 20205 

    # ... with 38 more rows 

我想作为显示列:

hours1 Male Female count 

基本上能够把最全男/女列,而不是行。有人能给我一些指点吗?谢谢。

+1

可能重复的[R如何创建数据透视表的数据框,同时涉及3个变量?](https://stackoverflow.com/questions/11597542/r-how-to-create-pivot- table-like-data-frame-while-3-variables-are-involved) – Psidom

+0

^^回答你的q @ junha082? – hrbrmstr

+0

感谢您的回复,我已经检查过这个帖子,其实并不是要获得某个值的平均值(我可能会使用transmute/summarize),而是将整个性别从一行转换为一列。但让我谷歌Dcast从reshape2 – junhao82

回答

1

你可以尝试这样的事情:

library(dplyr) 
library(tidyr) 
library(magrittr) 

brfss2013 %>% 
    select(hours1 = sleptim1, gender = sex) %>% 
    na.omit() %>% 
    group_by(hours1, gender) %>% 
    summarize(count = n()) %>% 
    spread(key = gender, value = count) 
+0

嗨,谢谢,第二个是我想要实现的。只是安装了tidyr包。 当我运行它,它说: 错误BRFSS%>%的价差(键=性别值=计数):在 找不到函数“%>%” 另外,我已经包括数= N()我先前的代码,这里的计数是如何计算的?数据的 – junhao82

+0

源是从2013 BRFSS调查:https://d3c33hcgiwev3.cloudfront.net/_384b2d9eda4b29131fb681b243a7767d_brfss2013.RData?Expires=1508112000&Signature=d3igdAz-A-h0dibkyU-oOTOweO~I9OsksFOLxKxEgMnQRFJWxENJJG6gYFsbhQVw-56mne4Tjo6NMN3biO61Ba2BAWR4HOPX5MHiSkzq92ph~QIFZaHg7aJOoK56kNQVqm7SRhBL4kr7jBvLWiAUk7ilulJZq7ejIk2~tm60gnk_&Key-Pair-Id= APKAJLTNE6QMUY6HBC5A – junhao82

+0

我正在使用来自sleptim1的数据,性别试图填充sleptim1,男性,女性,计数/总数(后来我可以改变总结男性和女性)@jsb – junhao82

-4

试试这个.. BRFSS%>% 传播(键=性别值=性别)%>% 选择(小时1,男,女,计数)