前情回顾:
- 预告:“Steem 和 R 语言:跟大鹏学 R 语言”连载即将开始
- Steem 和 R 语言:跟大鹏学 R 语言(1)下载安装
- Steem 和 R 语言:跟大鹏学 R 语言(2)简单计算
- Steem 和 R 语言:跟大鹏学 R 语言(3)变量和向量
- Steem 和 R 语言:跟大鹏学 R 语言(4)作图和统计
- Steem 和 R 语言:跟大鹏学 R 语言(5)表白
- Steem 和 R 语言:跟大鹏学 R 语言(6)读取文件
- Steem 和 R 语言:跟大鹏学 R 语言(7)读取文件(续)
- Steem 和 R 语言:跟大鹏学 R 语言(8)懒人起手式
本文选自《学 R:零基础学习 R 语言》(研究出版社,大鹏、李怡著,2018)第二章,有改动。
如果我们想看看数据框里某个指定值,比如1995年9月二氧化碳的浓度,该怎么选取单元格呢?你还记得上一节我们是如何选取 4 月的降水量吗?x[4]
。类似地,1995年是第37行,9月是第10列,所以:
mydata2[37, 10]
## [1] 358.11
要选取多个行呢?若你还记得用c()
生成一个向量,那就好办了,比如选取第10列的全部偶数行:
mydata2[c(2,4,6,8,10,12,14,16,18,20,
22,24,26,28,30,32,34,36,38), 10]
## [1] 314.00 316.11 316.54 318.48 320.18 322.93 324.68 327.27
## [9] 329.14 332.60 335.72 337.81 340.90 344.68 348.55 350.82
## [17] 352.94 355.84 359.51
行数太多,逐个敲起来太麻烦了吧,高效人士的办法是用seq()
函数生成个数列:
mydata2[seq(from = 2, to = 39, by = 2), 10]
## [1] 314.00 316.11 316.54 318.48 320.18 322.93 324.68 327.27
## [9] 329.14 332.60 335.72 337.81 340.90 344.68 348.55 350.82
## [17] 352.94 355.84 359.51
seq(from = 2, to = 39, by = 2)
表示以 2 为起点,39 为终点,间隔(即步长)为 2 生成一个数列。比如步长是1的话,就用seq(from = 2, to = 39, by = 1)
,等同于2:39
:
mydata2[2:39, 10]
## [1] 314.00 314.83 316.11 316.05 316.54 317.66 318.48 319.10
## [9] 320.18 322.22 322.93 323.20 324.68 327.35 327.27 328.40
## [17] 329.14 331.42 332.60 333.75 335.72 336.52 337.81 339.69
## [25] 340.90 342.92 344.68 346.27 348.55 349.64 350.82 352.05
## [33] 352.94 353.67 355.84 358.11 359.51 360.24
如果是选取整行或整列的话, 为了省事儿,可以空出来相应位置:
mydata2[, 10] # 第10列全部。
## [1] 313.68 314.00 314.83 316.11 316.05 316.54 317.66 318.48
## [9] 319.10 320.18 322.22 322.93 323.20 324.68 327.35 327.27
## [17] 328.40 329.14 331.42 332.60 333.75 335.72 336.52 337.81
## [25] 339.69 340.90 342.92 344.68 346.27 348.55 349.64 350.82
## [33] 352.05 352.94 353.67 355.84 358.11 359.51 360.24
mydata2[37, ] # 第37行全部。
## X Jan Feb Mar Apr May Jun Jul
## 37 1995 359.98 361.03 361.66 363.48 363.82 363.3 361.94
## Aug Sep Oct Nov Dec
## 37 359.5 358.11 357.8 359.61 360.74
如果列数太多,总不能老去数第几列吧?别急,也可以用行或列名称来替代列数:
mydata2[, 'Sep']
## [1] 313.68 314.00 314.83 316.11 316.05 316.54 317.66 318.48
## [9] 319.10 320.18 322.22 322.93 323.20 324.68 327.35 327.27
## [17] 328.40 329.14 331.42 332.60 333.75 335.72 336.52 337.81
## [25] 339.69 340.90 342.92 344.68 346.27 348.55 349.64 350.82
## [33] 352.05 352.94 353.67 355.84 358.11 359.51 360.24
或者用美元符号后面跟着列的名称:
mydata2$Sep
## [1] 313.68 314.00 314.83 316.11 316.05 316.54 317.66 318.48
## [9] 319.10 320.18 322.22 322.93 323.20 324.68 327.35 327.27
## [17] 328.40 329.14 331.42 332.60 333.75 335.72 336.52 337.81
## [25] 339.69 340.90 342.92 344.68 346.27 348.55 349.64 350.82
## [33] 352.05 352.94 353.67 355.84 358.11 359.51 360.24