2017-08-24 9 views
0

H. WickhamのR for Data Scienceに従っており、その本の著作から抜粋したコードを作成できませんでした。 私はthisセクションとその本の次のグラフを参照してください。 plot「R for Data Science」本(Wickham)。例を再現できません

私は文字通り本のコードの一部をコピーして貼り付けましたが、期待通りに機能しません。

library(tidyverse) 
library(forcats) 

by_age <- gss_cat %>% 
    filter(!is.na(age)) %>% 
    group_by(age, marital) %>% 
    count() %>% 
    mutate(prop = n/sum(n)) 

ggplot(by_age, aes(age, prop, color = marital)) + 
    geom_line(na.rm = TRUE) 

そして、それは書籍(わずかに異なるパターン)であるものを何かをプロットしたものではなく、ungroup() %>%mutate()前に、私が使用している場合でも。

誰かがこのパラドックスを説明できるかどうか、大変感謝します。

私の場合、propはすべて1に等しいというのが主な問題です。その結果、私はプロット上にちょうど水平線を得る。

ありがとうございました!

tidyverseバージョン:1.1.1 Rバージョン3.4.1(2017年6月30日) プラットフォーム:x86_64版-W64-MINGW32/x64(64ビット) 流水:Windows 7のx64の(7601をビルドする)サービスパック1

+0

私の作品:中

by_age <- gss_cat %>% filter(!is.na(age)) %>% group_by(age, marital) %>% count() %>% group(age) %>% mutate(prop = n/sum(n)) ggplot(by_age, aes(age, prop, color = marital)) + geom_line(na.rm = TRUE) 

結果。どのバージョンのパッケージを使用していますか? – thelatemail

+0

さて、何を得ていますか? 'tidyverse_update()'を実行してみてください – vincentmajor

+0

packageVersion( "tidyverse") '1.1.1' – AnnaZ

答えて

3

これはコードではかなり簡単な問題です。はい、それはおそらくハドリーと共同によって固定されるべきですが、それは大きな問題ではありません。

コンソールでby_ageを印刷して起動する場合は、表示されるはずです。

# A tibble: 351 x 4 
# Groups: age, marital [351] 

ので、tibbleがagemaritalの両方によってグループ化されます。これは、sumが1つの値、すなわちsum(n) == n - >prop === 1を有するグループに対してのみ計算されているので、count()とそれに続くsum(n)mutate内)の両方が同じ値を返すことを意味する。

あなたはungroup()で正しい軌道に乗っていましたが、希望の計算は各年齢の各婚姻状態の割合です。したがって、countmutateの間にgroup(age)を追加すると、あなたは金色になります。

result

関連する問題