大家好✨,这里是bio練。先赞后看养成习惯,还没关注的小伙伴点点关注不迷路。今天是南方的小年,祝福大家小年快乐。
目录
- 博主的话❤️:
- 前言
- 一、split()函数
- 二、subset()函数
- 总结
前言
今天继续学习R语言,我们之前已经介绍过了数据合并(R语言合并数据框的行与列),现在来介绍数据的拆分。数据拆分主要使用两个函数分别是split()和subset()函数。
一、split()函数
split()函数用于根据给定条件拆分数据。
#根据给定条件拆分数据,返回保存拆分数据的列表 split( x #要拆分的向量或数据框 f #保存拆分基准的因子 )
再次用我们的老朋友鸢尾花数据集作为例子:
split(iris,iris$Species)
$setosa
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
...
$versicolor
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
51 7.0 3.2 4.7 1.4 versicolor
52 6.4 3.2 4.5 1.5 versicolor
53 6.9 3.1 4.9 1.5 versicolor
...
$virginica
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
101 6.3 3.3 6.0 2.5 virginica
102 5.8 2.7 5.1 1.9 virginica
103 7.1 3.0 5.9 2.1 virginica
...
可以看到整个列表被分成了三部分,分别是
s
e
t
o
s
a
,
setosa,
setosa,versicolor,$virginica。
如果需要对不同品种计算Sepal.Length的均值。可以使用apply()系列函数中的lapply()函数(R语言apply系列函数)。
lapply()函数:
lapply(split(iris$Sepal.Length,iris$Species),mean) $setosa [1] 5.006 $versicolor [1] 5.936 $virginica [1] 6.588
tapply()函数:
tapply(iris$Sepal.Length,iris$Species,mean)
setosa versicolor virginica
5.006 5.936 6.588
二、subset()函数
subset()函数返回符合条件的数据。
#返回向量、矩阵、数据框中符合条件的部分 subset( x #对象 subset #是否要选取数据 ) subset( x subset select #为数据框时,该参数为要选取的列 )
例如从鸢尾花数据集中选取setosa品种的鸢尾花数据:
subset(iris,Species == "setosa") Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa ...
当条件较多时,可以使用and等运算符,例如:
subset(iris,Species == "setosa" & Sepal.Length > 5.0) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa 11 5.4 3.7 1.5 0.2 setosa ...
selec参数可以选取或者排除特定列。例如:
#选取特定列
subset(iris,select = c(Sepal.Length,Species))
Sepal.Length Species
1 5.1 setosa
2 4.9 setosa
3 4.7 setosa
4 4.6 setosa
5 5.0 setosa
...
#排除特定列
subset(iris,select = -c(Sepal.Length,Species)) #添加减号“-”
Sepal.Width Petal.Length Petal.Width
1 3.5 1.4 0.2
2 3.0 1.4 0.2
3 3.2 1.3 0.2
4 3.1 1.5 0.2
5 3.6 1.4 0.2
...
总结
以上就是今天要讲的内容,看到这里的小伙伴给大恐龙練点点赞,点点关注!平时要多加练习,有问题可以留言交流哦!



