如何从 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

相关文章