如何从 R 数据框中取出第 n 行的子集?
r programmingserver side programmingprogramming更新于 2025/6/24 13:07:17
在 R 中,我们可以使用多种方法查找子集,最简单的方法是使用单方括号。如果我们想要取出一行或多行连续或非连续的行的子集,那么可以直接使用数据框名称和单方括号来完成。例如,如果我们有一个名为 df 的数据框,并且我们想要取出 df 的第一行的子集,那么我们可以使用 df[1,] 即可。
示例
考虑以下数据框:
> set.seed(214) > x<-rnorm(20) > y<-rnorm(20,1,0.5) > z<-rnorm(20,2,0.57) > a<-rnorm(20,1,0.27) > b<-rpois(20,2) > c<-rpois(20,8) > q<-rpois(20,5) > w<-rpois(20,1) > df1<-data.frame(x,y,z,a,b,c,q,w) > df1
输出
x y z a b c q w 1 -0.46774980 1.1546101 2.3342540 0.9143609 2 8 6 0 2 0.04088223 0.7590773 2.2095770 0.9712316 1 5 6 2 3 1.00335193 1.7272210 1.7318417 1.1871876 2 8 7 0 4 2.02522505 0.8515016 1.9366870 0.4658958 4 4 3 2 5 0.30640096 1.2055142 2.5719530 0.8469379 4 9 5 1 6 0.42577748 1.6967249 1.5668833 0.9602888 5 7 5 1 7 0.74889267 2.0073967 2.4715450 0.7116510 3 5 5 1 8 0.44645148 1.0209466 1.1198797 1.3250236 2 10 6 1 9 -2.20514180 1.6927716 2.1447475 1.1950635 0 7 5 2 10 1.98181366 1.3930763 2.3038074 1.1096453 2 6 5 1 11 -2.62555247 1.2849028 1.7522339 1.1864803 2 5 2 1 12 -0.72301789 1.0450742 0.2930952 1.1930435 2 8 4 2 13 -0.88306915 0.8239228 2.5604929 0.9686630 1 8 2 0 14 -0.52517037 1.3413851 2.0189895 0.8643248 2 9 4 0 15 -0.94756990 0.2507953 1.1719018 1.0294649 5 10 3 1 16 -0.51916173 1.1889573 2.1277015 0.6870978 3 8 5 0 17 -1.12071138 1.4807661 1.9248328 1.0950342 1 12 4 2 18 0.42359496 1.5472942 1.7000941 0.8440301 1 12 2 2 19 0.46975875 1.4835207 1.2282101 1.0651645 2 6 7 0 20 -0.21269994 0.8056228 1.7694949 0.9686047 5 11 6 0
对 df1 的不同行进行子集设置:
示例
> df1[1,]
输出
x y z a b c q w 1 -0.4677498 1.15461 2.334254 0.9143609 2 8 6 0
示例
> df1[2,]
输出
x y z a b c q w 2 0.04088223 0.7590773 2.209577 0.9712316 1 5 6 2
示例
> df1[3,]
输出
x y z a b c q w 3 1.003352 1.727221 1.731842 1.187188 2 8 7 0
示例
> df1[5,]
输出
x y z a b c q w 5 0.306401 1.205514 2.571953 0.8469379 4 9 5 1
示例
> df1[8,]
输出
x y z a b c q w 8 0.4464515 1.020947 1.11988 1.325024 2 10 6 1
示例
> df1[9,]
输出
x y z a b c q w 9 -2.205142 1.692772 2.144747 1.195064 0 7 5 2
示例
> df1[12,]
输出
x y z a b c q w 12 -0.7230179 1.045074 0.2930952 1.193043 2 8 4 2
示例
> df1[15,]
输出
x y z a b c q w 15 -0.9475699 0.2507953 1.171902 1.029465 5 10 3 1
示例
> df1[18,]
输出
x y z a b c q w 18 0.423595 1.547294 1.700094 0.8440301 1 12 2 2
示例
> df1[20,]
输出
x y z a b c q w 20 -0.2126999 0.8056228 1.769495 0.9686047 5 11 6 0
我们来看另一个例子:
示例
> v1<-rexp(20,1.24) > v2<-rexp(20,3.7) > v3<-runif(20,2,8) > df2<-data.frame(v1,v2,v3) > df2
输出
v1 v2 v3 1 0.20602134 0.06916392 6.107286 2 0.29568560 0.36353986 3.529261 3 0.12250478 0.18168857 4.524547 4 2.37228009 0.20580564 6.795179 5 0.51194665 0.03005732 3.208580 6 0.25267457 0.12722097 2.184198 7 0.03742423 0.01711751 4.135536 8 0.45572624 0.29921997 6.046839 9 0.63617201 0.55386034 7.812157 10 0.81699828 0.56160708 4.071993 11 0.26570318 0.06759301 3.625271 12 0.63101790 0.10742853 2.573730 13 0.60664724 0.28611242 4.053965 14 0.79000859 0.09818221 6.257031 15 0.44555943 0.01828257 3.953676 16 1.87292479 0.20373389 3.407394 17 0.17258681 0.20278572 5.874761 18 0.09658603 0.09844967 5.382432 19 0.04970458 0.46433382 7.007515 20 0.31233081 0.06999427 4.855714
对 df2 的不同行进行子集设置:
示例
> df2[3,]
输出
v1 v2 v3 3 0.1225048 0.1816886 4.524547
示例
> df2[5,]
输出
v1 v2 v3 5 0.5119466 0.03005732 3.20858
示例
> df2[7,]
输出
v1 v2 v3 7 0.03742423 0.01711751 4.135536
示例
> df2[9,]
输出
v1 v2 v3 9 0.636172 0.5538603 7.812157
示例
> df2[10,]
输出
v1 v2 v3 10 0.8169983 0.5616071 4.071993
示例
> df2[12,]
输出
v1 v2 v3 12 0.6310179 0.1074285 2.57373
示例
> df2[15,]
输出
v1 v2 v3 15 0.4455594 0.01828257 3.953676
示例
> df2[17,]
输出
v1 v2 v3 17 0.1725868 0.2027857 5.874761
示例
> df2[20,]
输出
v1 v2 v3 20 0.3123308 0.06999427 4.855714