如何从R数据帧子集第n行?

我们可以使用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