R语言操作excel文件的数据

简述

令人惊讶的是,网上的教程关于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"
  • 查看a的数据

两种方法

方法一:

> 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

你可能感兴趣的:(R)