令人惊讶的是,网上的教程关于r语言处理excel数据的都是在说如何读。。
下面以用xlsx这个包为例
【两行命令】R语言读取excel数据
其实,导入进来之后,到R语言的环境中,就会转为data.frame的格式。
所以,我们就只需要安装data.frame的方式来操作就好了。
假设a是导入进来的变量
导入方法为:
library(xlsx)
a = read.xlsx('D:/Code/R/Data in Excel/Chapter 8/gamma-ray.xls',1)
> a[1,]
seconds count
1 116 0
> a[1]
seconds
1 116.0
2 112.0
3 160.0
4 51.5
5 102.0
6 77.4
7 14.5
8 1070.0
9 99.1
10 49.6
11 50.8
12 77.2
13 114.0
14 165.0
15 106.0
16 52.9
17 104.0
18 51.0
19 51.4
20 316.0
21 687.0
22 101.0
23 99.7
24 49.2
25 49.2
26 104.0
27 53.5
28 124.0
29 168.0
30 109.0
31 107.0
32 103.0
33 52.1
34 104.0
35 656.0
36 111.0
37 417.0
38 149.0
39 56.5
40 12.5
41 101.0
42 107.0
43 113.0
44 80.8
45 110.0
46 109.0
47 105.0
48 104.0
49 107.0
50 53.3
51 51.1
52 868.0
53 105.0
54 105.0
55 103.0
56 104.0
57 105.0
58 52.1
59 52.3
60 1110.0
61 30.4
62 116.0
63 44.9
64 46.1
65 97.9
66 102.0
67 162.0
68 102.0
69 102.0
70 98.7
71 98.7
72 103.0
73 51.6
74 53.1
75 1290.0
76 56.8
77 89.2
78 52.8
79 72.2
80 111.0
81 57.7
82 32.8
83 99.6
84 50.9
85 51.2
86 1350.0
87 69.1
88 67.7
89 38.2
90 37.9
91 31.3
92 121.0
93 55.8
94 460.0
95 128.0
96 38.7
97 41.8
98 81.7
99 88.3
100 37.4
> a[,1]
[1] 116.0 112.0 160.0 51.5 102.0 77.4 14.5 1070.0 99.1 49.6 50.8 77.2 114.0
[14] 165.0 106.0 52.9 104.0 51.0 51.4 316.0 687.0 101.0 99.7 49.2 49.2 104.0
[27] 53.5 124.0 168.0 109.0 107.0 103.0 52.1 104.0 656.0 111.0 417.0 149.0 56.5
[40] 12.5 101.0 107.0 113.0 80.8 110.0 109.0 105.0 104.0 107.0 53.3 51.1 868.0
[53] 105.0 105.0 103.0 104.0 105.0 52.1 52.3 1110.0 30.4 116.0 44.9 46.1 97.9
[66] 102.0 162.0 102.0 102.0 98.7 98.7 103.0 51.6 53.1 1290.0 56.8 89.2 52.8
[79] 72.2 111.0 57.7 32.8 99.6 50.9 51.2 1350.0 69.1 67.7 38.2 37.9 31.3
[92] 121.0 55.8 460.0 128.0 38.7 41.8 81.7 88.3 37.4
不过发现前面有一个那个[1]
之类的数据是吧,那个其实是不存在于数据之中的,这里只是系统在显示数据的时候自动生成的。
R语言是主要为了数据处理而服务的。所以,这里在处理很多数据的时候,都需要标记一下当前这一行的数据的第一个是第几位。这样就好看一点。
下面的东西,很奇怪是吧。列名居然还是a[2]的,据使用体验效果来看,估计是谁放前面就是谁的列名做生成的临时变量的列名
> a[2]/a[1]
count
1 0.000000000
2 0.000000000
3 0.000000000
4 0.000000000
5 0.009803922
6 0.000000000
7 0.000000000
8 0.002803738
9 0.010090817
10 0.000000000
11 0.000000000
12 0.000000000
13 0.000000000
14 0.000000000
15 0.000000000
16 0.000000000
17 0.019230769
18 0.039215686
19 0.000000000
20 0.006329114
21 0.005822416
22 0.000000000
23 0.000000000
24 0.000000000
25 0.020325203
26 0.000000000
27 0.000000000
28 0.000000000
29 0.000000000
30 0.000000000
31 0.009345794
32 0.000000000
33 0.000000000
34 0.009615385
35 0.007621951
36 0.009009009
37 0.004796163
38 0.006711409
39 0.017699115
40 0.000000000
41 0.009900990
42 0.000000000
43 0.008849558
44 0.000000000
45 0.000000000
46 0.000000000
47 0.000000000
48 0.009615385
49 0.000000000
50 0.000000000
51 0.000000000
52 0.001152074
53 0.000000000
54 0.000000000
55 0.019417476
56 0.000000000
57 0.000000000
58 0.000000000
59 0.000000000
60 0.000000000
61 0.000000000
62 0.000000000
63 0.000000000
64 0.000000000
65 0.000000000
66 0.009803922
67 0.000000000
68 0.000000000
69 0.000000000
70 0.000000000
71 0.020263425
72 0.000000000
73 0.019379845
74 0.000000000
75 0.002325581
76 0.000000000
77 0.011210762
78 0.018939394
79 0.000000000
80 0.000000000
81 0.000000000
82 0.000000000
83 0.020080321
84 0.019646365
85 0.000000000
86 0.004444444
87 0.000000000
88 0.000000000
89 0.026178010
90 0.000000000
91 0.000000000
92 0.000000000
93 0.000000000
94 0.015217391
95 0.000000000
96 0.025839793
97 0.000000000
98 0.000000000
99 0.000000000
100 0.000000000
这里就直接用上一个操作的数据做了
> a[3] = a[2] / a[1]
操作之后,就会在这个data.frame之中,添加一个新的列。
我们注意到,上一个数据生成的时候,我们没有指定列名。所以,这里我们需要交代一下。
下面的代码,就将第三列的列名修改为了count_avg
> names(a)[3] = "count_avg"
两种方法
方法一:
> View(a)
方法二:
> a
seconds count count_avg
1 116.0 0 0.000000000
2 112.0 0 0.000000000
3 160.0 0 0.000000000
4 51.5 0 0.000000000
5 102.0 1 0.009803922
6 77.4 0 0.000000000
7 14.5 0 0.000000000
8 1070.0 3 0.002803738
9 99.1 1 0.010090817
10 49.6 0 0.000000000
11 50.8 0 0.000000000
12 77.2 0 0.000000000
13 114.0 0 0.000000000
14 165.0 0 0.000000000
15 106.0 0 0.000000000
16 52.9 0 0.000000000
17 104.0 2 0.019230769
18 51.0 2 0.039215686
19 51.4 0 0.000000000
20 316.0 2 0.006329114
21 687.0 4 0.005822416
22 101.0 0 0.000000000
23 99.7 0 0.000000000
24 49.2 0 0.000000000
25 49.2 1 0.020325203
26 104.0 0 0.000000000
27 53.5 0 0.000000000
28 124.0 0 0.000000000
29 168.0 0 0.000000000
30 109.0 0 0.000000000
31 107.0 1 0.009345794
32 103.0 0 0.000000000
33 52.1 0 0.000000000
34 104.0 1 0.009615385
35 656.0 5 0.007621951
36 111.0 1 0.009009009
37 417.0 2 0.004796163
38 149.0 1 0.006711409
39 56.5 1 0.017699115
40 12.5 0 0.000000000
41 101.0 1 0.009900990
42 107.0 0 0.000000000
43 113.0 1 0.008849558
44 80.8 0 0.000000000
45 110.0 0 0.000000000
46 109.0 0 0.000000000
47 105.0 0 0.000000000
48 104.0 1 0.009615385
49 107.0 0 0.000000000
50 53.3 0 0.000000000
51 51.1 0 0.000000000
52 868.0 1 0.001152074
53 105.0 0 0.000000000
54 105.0 0 0.000000000
55 103.0 2 0.019417476
56 104.0 0 0.000000000
57 105.0 0 0.000000000
58 52.1 0 0.000000000
59 52.3 0 0.000000000
60 1110.0 0 0.000000000
61 30.4 0 0.000000000
62 116.0 0 0.000000000
63 44.9 0 0.000000000
64 46.1 0 0.000000000
65 97.9 0 0.000000000
66 102.0 1 0.009803922
67 162.0 0 0.000000000
68 102.0 0 0.000000000
69 102.0 0 0.000000000
70 98.7 0 0.000000000
71 98.7 2 0.020263425
72 103.0 0 0.000000000
73 51.6 1 0.019379845
74 53.1 0 0.000000000
75 1290.0 3 0.002325581
76 56.8 0 0.000000000
77 89.2 1 0.011210762
78 52.8 1 0.018939394
79 72.2 0 0.000000000
80 111.0 0 0.000000000
81 57.7 0 0.000000000
82 32.8 0 0.000000000
83 99.6 2 0.020080321
84 50.9 1 0.019646365
85 51.2 0 0.000000000
86 1350.0 6 0.004444444
87 69.1 0 0.000000000
88 67.7 0 0.000000000
89 38.2 1 0.026178010
90 37.9 0 0.000000000
91 31.3 0 0.000000000
92 121.0 0 0.000000000
93 55.8 0 0.000000000
94 460.0 7 0.015217391
95 128.0 0 0.000000000
96 38.7 1 0.025839793
97 41.8 0 0.000000000
98 81.7 0 0.000000000
99 88.3 0 0.000000000
100 37.4 0 0.000000000
只保留第一、二列
> a = a[, c(1, 2)]
只删除第一、二列
> a = a[, -c(1, 2)]
保留第一到第二列
(后面的能够数值就可以任意写了,删除连续的片段)
> a = a[, 1:2]
只删除第一到第二列
(同样是,可以删除连续的片段)
> a = a[, -c(1:2)]
删除行
就是跟上面的是一样的。(只是把列的位置和行的位置都调换一下就好了)
注意一下:逗号不能省略
提取部分行和部分列
第一行到第一列
> a[1:5, 1:2]
seconds count
1 116.0 0
2 112.0 0
3 160.0 0
4 51.5 0
5 102.0 1
> a = a[,-which(names(a) %in% c("count"))]
删除掉 count
列