2017-05-09 25 views
0

2つの変数間でデータを集計しようとしていますが、集計付きの出力は非常に奇妙です(少なくとも複数のページを区切るrノートブックの出力では)。私は、実際のテーブルで、次に1つのサマリー出力の行として変数、および列などの他の、およびを有するたい行&列データ いくつかの例データの各組み合わせのための手段:列内のgrouped_by変数を使用したクロス集計のデータの集約

dat1 <- data.frame(
    category = rep(c("catA", "catB", "catC"), each=4), 
    age = sample(1:2,size=4,replace=T), 
    value = rnorm(12) 
) 

その後、私は通常、このように私の要約データフレームになるだろう。このようになります

dat1 %>% group_by(category,age)%>% summarize(mean(value)) 

enter image description here

を私の実際のデータは、変数のそれぞれ持っているが10+レベルのため、テーブルは非常に長く、読みにくいです。 私が使用して作成され、このようなものを好む:

dat1 %>% group_by(category) 
%>% summarize(mean.age1 =mean(value[age==1]), 
mean.age2 =mean(value[age==2])) 

enter image description here

を手コーディング手段欄より良い方法があるに違いありませんか?

答えて

2

あなたはちょうどこのような何かを加えてtidyrを使用する必要があります。次のように

library(dplyr) 
library(tidyr) 
dat1 %>% 
    group_by(category, age) %>% 
    summarise(mean = mean(value)) %>% 
    spread(age, mean, sep = '') 

出力は次のとおりです。

Source: local data frame [3 x 3] 
Groups: category [3] 

    category  age1  age2 
* <fctr>  <dbl>  <dbl> 
1  catA 0.2930104 0.3861381 
2  catB 0.5752186 0.1454201 
3  catC 1.0845645 0.3117227 
関連する問題