&引用;R代表数据科学“;书(韦翰)。无法复制示例

&引用;R代表数据科学“;书(韦翰)。无法复制示例,r,tidyverse,R,Tidyverse,我正在学习H.Wickham的数据科学R,但我无法让那本书中的代码片段起作用。 我参考了本书的第节和下图。 我从书中复制并粘贴了代码的一部分,但它没有按预期工作 library(tidyverse) library(forcats) by_age <- gss_cat %>% filter(!is.na(age)) %>% group_by(age, marital) %>% count() %>% mutate(prop = n / sum(

我正在学习H.Wickham的数据科学R,但我无法让那本书中的代码片段起作用。 我参考了本书的第节和下图。

我从书中复制并粘贴了代码的一部分,但它没有按预期工作

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)
库(tidyverse)
图书馆(供猫用)
按年龄%
过滤器(!is.na(年龄))%>%
按年龄、婚姻状况划分的组别%>%
计数()%>%
变异(prop=n/和(n))
ggplot(按年龄、不良事件(年龄、道具、颜色=婚姻))+
几何线(na.rm=真)
即使我在
mutate()
之前使用
ungroup()%%>%%
,它也会绘制一些东西,但不会绘制书中的内容(略有不同的模式)

如果有人能解释这一悖论,我将不胜感激

主要问题是在我的例子中,
prop
都等于1。结果,我在绘图上只得到了一条水平线

谢谢大家!

tidyverse
版本:1.1.1 R版本3.4.1(2017-06-30) 平台:x86_64-w64-mingw32/x64(64位)
在Windows 7 x64(build 7601)Service Pack 1下运行这看起来是一个相当简单的代码问题。是的,它可能应该由哈德利和他的同事来修复,但这不是什么大问题

如果您开始在控制台中按年龄打印
,您应该会看到:

# A tibble: 351 x 4
# Groups:   age, marital [351]
因此,TIBLE根据
年龄
婚姻
进行分组。这意味着
count()
和随后的
sum(n)
(在
mutate
中)都返回相同的值,因为
sum
仅在组上使用一个值进行计算,即
sum(n)==n
-->
prop==1

您使用
ungroup()
的方法是正确的,但是,所需的计算是每个年龄段的每个婚姻状况的比例。因此,在
计数
变异
之间添加一个
组(年龄)
,你就是黄金

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)
按年龄划分%
过滤器(!is.na(年龄))%>%
按年龄、婚姻状况划分的组别%>%
计数()%>%
组(年龄)%>%
变异(prop=n/和(n))
ggplot(按年龄、不良事件(年龄、道具、颜色=婚姻))+
几何线(na.rm=真)
结果:


这似乎是代码中一个相当简单的问题。是的,它可能应该由哈德利和他的同事来修复,但这不是什么大问题

如果您开始在控制台中按年龄打印
,您应该会看到:

# A tibble: 351 x 4
# Groups:   age, marital [351]
因此,TIBLE根据
年龄
婚姻
进行分组。这意味着
count()
和随后的
sum(n)
(在
mutate
中)都返回相同的值,因为
sum
仅在组上使用一个值进行计算,即
sum(n)==n
-->
prop==1

您使用
ungroup()
的方法是正确的,但是,所需的计算是每个年龄段的每个婚姻状况的比例。因此,在
计数
变异
之间添加一个
组(年龄)
,你就是黄金

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)
按年龄划分%
过滤器(!is.na(年龄))%>%
按年龄、婚姻状况划分的组别%>%
计数()%>%
组(年龄)%>%
变异(prop=n/和(n))
ggplot(按年龄、不良事件(年龄、道具、颜色=婚姻))+
几何线(na.rm=真)
结果:


对我有用。你使用的是什么版本的软件包?你得到了什么?尝试运行
tidyverse\u update()
>packageVersion(“tidyverse”)“1.1.1”。不幸的是,tidyverse\u update()没有帮助。适合我。你使用的是什么版本的软件包?你得到了什么?尝试运行
tidyverse\u update()
>packageVersion(“tidyverse”)“1.1.1”。不幸的是,tidyverse\u update()没有帮助。