初识R语言—数据框的操作

2020-04-02  本文已影响0人  超级无敌大蜗牛

R的数据结构

1、向量vector
2、矩阵matrix
3、数组array
4、数据框 dataframe
5、列表


R的数据结构

数据框 data.frame

简化数据框的批量操作
## attach/detach
> data <- (head(mtcars))[1:3]
> data
                   mpg cyl disp
Mazda RX4         21.0   6  160
Mazda RX4 Wag     21.0   6  160
Datsun 710        22.8   4  108
Hornet 4 Drive    21.4   6  258
Hornet Sportabout 18.7   8  360
Valiant           18.1   6  225
> data$mpg+data$cyl+data$disp
[1] 187.0 187.0 134.8 285.4 386.7 249.1
> attach(data)
> mpg+cyl+disp  
[1] 187.0 187.0 134.8 285.4 386.7 249.1
> detach(data)
##简单来说就是attach将data fix住了,后续需要写dataname的地方都可以省略,代码就会简单一些;但是用完这个命令需要及时deatch data,释放数据。
## with
> data$mpg+data$cyl+data$disp
[1] 187.0 187.0 134.8 285.4 386.7 249.1
> with(data,{
+     mpg+cyl+disp   
+ })
[1] 187.0 187.0 134.8 285.4 386.7 249.1
##如果需要赋值的话,需要这样写才可以
with(data,{
+    a <<- mpg+cyl+disp   
+ })

添加列

##within函数
> data <- within(data,{
+     sum=mpg+cyl+disp
+     mean=(mpg+cyl+disp)/3
+ })
> data
                   mpg cyl disp      mean   sum
Mazda RX4         21.0   6  160  62.33333 187.0
Mazda RX4 Wag     21.0   6  160  62.33333 187.0
Datsun 710        22.8   4  108  44.93333 134.8
Hornet 4 Drive    21.4   6  258  95.13333 285.4
Hornet Sportabout 18.7   8  360 128.90000 386.7
Valiant           18.1   6  225  83.03333 249.1

##transform函数
> data
                   mpg cyl disp
Mazda RX4         21.0   6  160
Mazda RX4 Wag     21.0   6  160
Datsun 710        22.8   4  108
Hornet 4 Drive    21.4   6  258
Hornet Sportabout 18.7   8  360
Valiant           18.1   6  225
> test <- transform(data,s=mpg+cyl+disp,m=(mpg+cyl+disp)/3)
> test
                   mpg cyl disp     s         m
Mazda RX4         21.0   6  160 187.0  62.33333
Mazda RX4 Wag     21.0   6  160 187.0  62.33333
Datsun 710        22.8   4  108 134.8  44.93333
Hornet 4 Drive    21.4   6  258 285.4  95.13333
Hornet Sportabout 18.7   8  360 386.7 128.90000
Valiant           18.1   6  225 249.1  83.03333

##mutate函数
> library(dplyr)
> data
                   mpg cyl disp
Mazda RX4         21.0   6  160
Mazda RX4 Wag     21.0   6  160
Datsun 710        22.8   4  108
Hornet 4 Drive    21.4   6  258
Hornet Sportabout 18.7   8  360
Valiant           18.1   6  225
> test <- mutate(data,sum=mpg+cyl+disp)
> test
   mpg cyl disp   sum
1 21.0   6  160 187.0
2 21.0   6  160 187.0
3 22.8   4  108 134.8
4 21.4   6  258 285.4
5 18.7   8  360 386.7
6 18.1   6  225 249.1

##transform和mutate的区别在于,transform不可以直接调用新建的变量,而mutate和within可以,例子如下:
> test <- transform(data,sum=mpg+cyl+disp,average=sum/3)
Error in sum/3 : non-numeric argument to binary operator
> test <- mutate(data,sum=mpg+cyl+disp,average=sum/3)
> test
   mpg cyl disp   sum   average
1 21.0   6  160 187.0  62.33333
2 21.0   6  160 187.0  62.33333
3 22.8   4  108 134.8  44.93333
4 21.4   6  258 285.4  95.13333
5 18.7   8  360 386.7 128.90000
6 18.1   6  225 249.1  83.03333

所以,学好mutate就够了,但要注意使用前要先加载包

上一篇下一篇

猜你喜欢

热点阅读