本题来自《R数据科学》第7章使用tibble实现简单数据框
(4) 在以下的数据框中练习如何引用不符合语法规则的变量名。
a. 提取名称为 1 的变量。
b. 绘制表示变量 1 和变量 2 关系的散点图。
c. 创建一个名称为 3 的新列,其值为列 2 除以列 1。
d. 将这些列重新命名为 one、two 和 three。
annoying <- tibble(
`1` = 1:10,
`2` = `1` * 2 + rnorm(length(`1`))
)
a.提取名称为 1 的变量。
library("tidyverse")
annoying <- tibble(
`1` = 1:10,
`2` = `1` * 2 + rnorm(length(`1`))
)
# 方法1:按名称提取
annoying$`1`
# 方法2:按位置提取
annoying[[1]]
输出结果为:
> annoying$`1`
[1] 1 2 3 4 5 6 7 8 9 10
b. 绘制表示变量 1 和变量 2 关系的散点图。
library("tidyverse")
annoying <- tibble(
`1` = 1:10,
`2` = `1` * 2 + rnorm(length(`1`))
)
ggplot(annoying, aes(x = `1`, y = `2`)) +
geom_point() +
geom_smooth()
c. 创建一个名称为 3 的新列,其值为列 2 除以列 1。
方法1:直接在数据框中添加
library("tidyverse")
annoying <- tibble(
`1` = 1:10,
`2` = `1` * 2 + rnorm(length(`1`)),
`3` = `2` / `1`
)
annoying
方法2:使用mutate
library("tidyverse")
annoying <- tibble(
`1` = 1:10,
`2` = `1` * 2 + rnorm(length(`1`))
)
# 使用mutate
mutate(annoying, `3`= `2` / `1`)
输出结果为:
# A tibble: 10 × 3
`1` `2` `3`
<int> <dbl> <dbl>
1 1 1.01 1.01
2 2 3.47 1.74
3 3 7.24 2.41
4 4 8.40 2.10
5 5 9.35 1.87
6 6 9.93 1.65
7 7 14.2 2.03
8 8 14.8 1.85
9 9 16.7 1.85
10 10 20.3 2.03
d. 将这些列重新命名为 one、two 和 three。
library("tidyverse")
annoying <- tibble(
`1` = 1:10,
`2` = `1` * 2 + rnorm(length(`1`)),
`3` = `2` / `1`
)
annoying %>%
rename(
one = `1`,
two = `2`,
three = `3`
)
输出结果为:
A tibble: 10 × 3
one two three
<int> <dbl> <dbl>
1 1 0.820 0.820
2 2 4.24 2.12
3 3 6.55 2.18
4 4 8.25 2.06
5 5 13.1 2.62
6 6 13.7 2.28
7 7 14.2 2.03
8 8 15.3 1.92
9 9 18.3 2.04
10 10 19.2 1.92
20221203