如何在不使用列名的情况下在 R 中创建数据框的子集?

r programmingserver side programmingprogramming更新于 2025/4/8 16:52:17

可以使用列名和列号对数据框进行子集设置。此外,我们可以通过后续和非后续列号对数据框进行子集设置。例如,如果我们有一个包含列 x、y、z 的数据框 df,那么我们可以使用 df[,c(1,3)] 创建 x 和 z 的子集。

示例

考虑以下数据框:

> set.seed(191)
> x1<-rnorm(20,1)
> x2<-rnorm(20,5)
> x3<-rnorm(20,2)
> x4<-rnorm(20,4)
> df1<-data.frame(x1,x2,x3,x4)
> df1

输出

     x1        x2        x3        x4
1 0.8464828 5.517463 1.3510192 3.879824
2 1.7157414 4.902044 1.7288418 4.915879
3 2.0612258 5.343704 3.4476224 3.198662
4 0.9817547 5.310376 0.7360361 4.191265
5 1.3137032 4.690344 1.8930611 3.195032
6 3.2946391 5.356714 0.7507614 2.762971
7 1.1292996 3.956172 1.3893677 3.472453
8 0.5938585 3.524826 2.4999638 3.442268
9 2.5721891 3.986746 2.1758887 3.065743
10 0.3154647 2.602883 2.2014771 4.111108
11 0.6326024 6.630669 2.4982478 2.310966
12 1.9772099 4.863338 3.0983665 3.976421
13 2.4442273 3.390198 3.7922736 3.743440
14 1.1505010 4.512891 2.7232374 3.528800
15 2.2532166 4.969238 2.1687148 3.691669
16 0.5104193 4.440487 1.9766220 4.120722
17 0.9377628 2.559686 3.1919780 2.755742
18 -0.3147257 4.919251 3.0462375 2.625914
19 0.3678290 4.088426 3.3926200 3.797904
20 2.0272953 4.151505 3.1796609 2.771270

使用列号对数据框 df1 的列进行子集设置:

示例

> df1[,1]

输出

[1]  0.8464828 1.7157414 2.0612258 0.9817547 1.3137032 3.2946391
[7]  1.1292996 0.5938585 2.5721891 0.3154647 0.6326024 1.9772099
[13] 2.4442273 1.1505010 2.2532166 0.5104193 0.9377628 -0.3147257
[19] 0.3678290 2.0272953

示例

> df1[,1:2]

输出

       x1      x2
1 0.8464828 5.517463
2 1.7157414 4.902044
3 2.0612258 5.343704
4 0.9817547 5.310376
5 1.3137032 4.690344
6 3.2946391 5.356714
7 1.1292996 3.956172
8 0.5938585 3.524826
9 2.5721891 3.986746
10 0.3154647 2.602883
11 0.6326024 6.630669
12 1.9772099 4.863338
13 2.4442273 3.390198
14 1.1505010 4.512891
15 2.2532166 4.969238
16 0.5104193 4.440487
17 0.9377628 2.559686
18 -0.3147257 4.919251
19 0.3678290 4.088426
20 2.0272953 4.151505

示例

> df1[,1:3]

输出

      x1        x2       x3
1 0.8464828 5.517463 1.3510192
2 1.7157414 4.902044 1.7288418
3 2.0612258 5.343704 3.4476224
4 0.9817547 5.310376 0.7360361
5 1.3137032 4.690344 1.8930611
6 3.2946391 5.356714 0.7507614
7 1.1292996 3.956172 1.3893677
8 0.5938585 3.524826 2.4999638
9 2.5721891 3.986746 2.1758887
10 0.3154647 2.602883 2.2014771
11 0.6326024 6.630669 2.4982478
12 1.9772099 4.863338 3.0983665
13 2.4442273 3.390198 3.7922736
14 1.1505010 4.512891 2.7232374
15 2.2532166 4.969238 2.1687148
16 0.5104193 4.440487 1.9766220
17 0.9377628 2.559686 3.1919780
18 -0.3147257 4.919251 3.0462375
19 0.3678290 4.088426 3.3926200
20 2.0272953 4.151505 3.1796609

示例

> df1[,2:4]

输出

       x2       x3      x4
1 5.517463 1.3510192 3.879824
2 4.902044 1.7288418 4.915879
3 5.343704 3.4476224 3.198662
4 5.310376 0.7360361 4.191265
5 4.690344 1.8930611 3.195032
6 5.356714 0.7507614 2.762971
7 3.956172 1.3893677 3.472453
8 3.524826 2.4999638 3.442268
9 3.986746 2.1758887 3.065743
10 2.602883 2.2014771 4.111108
11 6.630669 2.4982478 2.310966
12 4.863338 3.0983665 3.976421
13 3.390198 3.7922736 3.743440
14 4.512891 2.7232374 3.528800
15 4.969238 2.1687148 3.691669
16 4.440487 1.9766220 4.120722
17 2.559686 3.1919780 2.755742
18 4.919251 3.0462375 2.625914
19 4.088426 3.3926200 3.797904
20 4.151505 3.1796609 2.771270

示例

> df1[,c(1,3)]

输出

        x1      x3
1 0.8464828 1.3510192
2 1.7157414 1.7288418
3 2.0612258 3.4476224
4 0.9817547 0.7360361
5 1.3137032 1.8930611
6 3.2946391 0.7507614
7 1.1292996 1.3893677
8 0.5938585 2.4999638
9 2.5721891 2.1758887
10 0.3154647 2.2014771
11 0.6326024 2.4982478
12 1.9772099 3.0983665
13 2.4442273 3.7922736
14 1.1505010 2.7232374
15 2.2532166 2.1687148
16 0.5104193 1.9766220
17 0.9377628 3.1919780
18 -0.3147257 3.0462375
19 0.3678290 3.3926200
20 2.0272953 3.1796609

示例

> df1[,c(2,4,1)]

输出

      x2       x4      x1
1 5.517463 3.879824 0.8464828
2 4.902044 4.915879 1.7157414
3 5.343704 3.198662 2.0612258
4 5.310376 4.191265 0.9817547
5 4.690344 3.195032 1.3137032
6 5.356714 2.762971 3.2946391
7 3.956172 3.472453 1.1292996
8 3.524826 3.442268 0.5938585
9 3.986746 3.065743 2.5721891
10 2.602883 4.111108 0.3154647
11 6.630669 2.310966 0.6326024
12 4.863338 3.976421 1.9772099
13 3.390198 3.743440 2.4442273
14 4.512891 3.528800 1.1505010
15 4.969238 3.691669 2.2532166
16 4.440487 4.120722 0.5104193
17 2.559686 2.755742 0.9377628
18 4.919251 2.625914 -0.3147257
19 4.088426 3.797904 0.3678290
20 4.151505 2.771270 2.0272953

相关文章