前情回顾:
- 预告:“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)懒人起手式
- Steem 和 R 语言:跟大鹏学 R 语言(9)选取单元格
本文选自《学 R:零基础学习 R 语言》(研究出版社,大鹏、李怡著,2018)第二章,有改动。
列名称都有哪些呢?其实在输入$符号后,RStudio就立刻贴心地把所有列名称列出来了,供我们选择。如果没有出现,请咨询tab小助理。除此之外,用names()
函数或colnames()
函数可以查看列名称:
names(mydata2) # 或 colnames(mydata2)
## [1] "X" "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug"
## [10] "Sep" "Oct" "Nov" "Dec"
第一列在原始文件中没有名字,所以R自动起了个名字叫做“X”。我们可以把它的列名称改为“year”:
names(mydata2)[1] <- 'year'
names(mydata2)
## [1] "year" "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul"
## [9] "Aug" "Sep" "Oct" "Nov" "Dec"
类似的,用rownames()
函数可以查看行名称。由于我们并没有给各行起名字,R默认按数字顺序命名。我们可以将年份列作为行名称:
rownames(mydata2)
## [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11"
## [12] "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22"
## [23] "23" "24" "25" "26" "27" "28" "29" "30" "31" "32" "33"
## [34] "34" "35" "36" "37" "38" "39"
rownames(mydata2) <- mydata2$year
rownames(mydata2)
## [1] "1959" "1960" "1961" "1962" "1963" "1964" "1965" "1966"
## [9] "1967" "1968" "1969" "1970" "1971" "1972" "1973" "1974"
## [17] "1975" "1976" "1977" "1978" "1979" "1980" "1981" "1982"
## [25] "1983" "1984" "1985" "1986" "1987" "1988" "1989" "1990"
## [33] "1991" "1992" "1993" "1994" "1995" "1996" "1997"
这样,如果要查看1995年9月的数据,就不用再数第几行第几列了,用行名称和列名称更方便:
mydata2['1995', 'Sep']
## [1] 358.11
这对于处理大型的表格尤其方便,省得瞪着眼睛去数数寻找单元格了,很大程度上减少了对视力的伤害。
任何一行或一列,都可以作为向量来计算。我们仿照上一章介绍的向量计算方法,来算一下1995年全年二氧化碳的平均浓度,只要对该行的第2到13列求平均:
sum(mydata2['1995', 2:13]) / 12
## [1] 360.9142
思考 2.3 直接使用平均值函数mean()行不行?为什么?
如果求1996年比1995年二氧化碳浓度增加了多少,可以料想,只需把两行的平均值相减:
sum(mydata2['1996', 2:13]) / 12 -
sum(mydata2['1995', 2:13]) / 12
## [1] 1.7725
那么,1996年每个月比1995年同比增加了多少二氧化碳?
mydata2['1996', ] - mydata2['1995', ]
## year Jan Feb Mar Apr May Jun Jul Aug Sep Oct
## 1996 1 2.11 2.26 2.4 1.28 1.63 1.71 1.76 2.04 1.4 1.85
## Nov Dec
## 1996 1.19 1.64
这里我们可以体会向量计算的特点,是逐个对应相减的。
现在,你可以试着对任意一行或一列来做向量计算了。
练习 2.1 请计算1995年二氧化碳浓度的最大值和最小值。
整行或整列的计算,在R中有更方便的方法,可以这样:
colMeans(mydata2[, 2:13]) # 排除掉第一列后,对整列求平均
## Jan Feb Mar Apr May Jun
## 336.4308 337.2033 338.0546 339.2944 339.8821 339.3282
## Jul Aug Sep Oct Nov Dec
## 337.9164 335.9579 334.2428 334.1692 335.4679 336.6946
每年和每月的平均值一下就算出来了。类似的函数还有整行求和rowSum()
和整列求和colSum()
。函数名很好记,就是在原来函数前面加个row
或col
,并且注意大小写。