"R for Data Science" 书(威克姆)。无法重现示例
"R for Data Science" book (Wickham) . Cannot reproduce example
我正在关注 H. Wickham 的 R for Data Science,但无法从该书中提取代码片段。
我参考了本书的 this 部分和下图。
.
我从书上直接复制粘贴了部分代码,但没有达到预期效果。
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)
即使我在 mutate()
之前使用 ungroup() %>%
,它也会绘制一些内容,但不是书中的内容(模式略有不同)。
如果有人能解释这个悖论,我将不胜感激。
主要问题是 prop
在我的例子中都等于 1。结果,我在情节上只得到一条水平线。
谢谢!
tidyverse
版本:1.1.1
R 版本 3.4.1 (2017-06-30)
平台:x86_64-w64-mingw32/x64(64 位)
运行 下:Windows 7 x64(内部版本 7601)Service Pack 1
这看起来是一个相当简单的代码问题。是的,它可能应该由哈德利和他的同事修理,但这没什么大不了的。
如果您首先在控制台中打印 by_age
,您应该会看到:
# A tibble: 351 x 4
# Groups: age, marital [351]
因此,tibble 按 age
和 marital
分组。这意味着 count()
和随后的 sum(n)
(在 mutate
内)return 是相同的值,因为 sum
仅在只有一个的组上计算值即 sum(n) == n
--> prop === 1
.
您的 ungroup()
是在正确的轨道上,但是,所需的计算是每个年龄的每个婚姻状况的比例。所以,在 count
和 mutate
之间添加一个 group(age)
,你就是金色的。
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)
结果:
我正在关注 H. Wickham 的 R for Data Science,但无法从该书中提取代码片段。
我参考了本书的 this 部分和下图。
我从书上直接复制粘贴了部分代码,但没有达到预期效果。
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)
即使我在 mutate()
之前使用 ungroup() %>%
,它也会绘制一些内容,但不是书中的内容(模式略有不同)。
如果有人能解释这个悖论,我将不胜感激。
主要问题是 prop
在我的例子中都等于 1。结果,我在情节上只得到一条水平线。
谢谢!
tidyverse
版本:1.1.1
R 版本 3.4.1 (2017-06-30)
平台:x86_64-w64-mingw32/x64(64 位)
运行 下:Windows 7 x64(内部版本 7601)Service Pack 1
这看起来是一个相当简单的代码问题。是的,它可能应该由哈德利和他的同事修理,但这没什么大不了的。
如果您首先在控制台中打印 by_age
,您应该会看到:
# A tibble: 351 x 4
# Groups: age, marital [351]
因此,tibble 按 age
和 marital
分组。这意味着 count()
和随后的 sum(n)
(在 mutate
内)return 是相同的值,因为 sum
仅在只有一个的组上计算值即 sum(n) == n
--> prop === 1
.
您的 ungroup()
是在正确的轨道上,但是,所需的计算是每个年龄的每个婚姻状况的比例。所以,在 count
和 mutate
之间添加一个 group(age)
,你就是金色的。
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)
结果: