如何使用行名称移除 R 数据框中的行?


有许多子集 R 数据框的方法,有时我们需要通过移除行来实现。通常,我们会使用行索引号移除行,但我们也可以使用行名称来实现。这可以通过将需移除的行名称存储在向量中,然后使用方括号进行子集来移除,如下例所示。

示例

考虑以下数据框

> x<-rnorm(20,1,0.04)
> y<-rnorm(20,100,4)
> row.names(df)<-LETTERS[1:20]
> df

输出

      x        y
A 0.9454799 96.62077
B 0.9642909 101.54903
C 1.0294169 97.17593
D 0.9877072 98.98962
E 1.0182932 92.32761
F 1.0351041 103.04182
G 0.9613700 90.65195
H 1.0240703 99.63975
I 0.9424871 97.11730
J 0.9876748 108.07684
K 1.0652311 102.14823
L 1.0196251 93.51378
M 0.9752639 100.57394
N 0.9890722 101.37151
O 0.9873279 100.37910
P 0.9564027 96.94806
Q 0.9456446 103.40934
R 0.9617322 94.89198
S 0.9956141 86.43256
T 1.0253881 101.52844

制作需要移除的行名称的向量

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

示例

> row_names_df_to_remove<-c("A","B","C","D","E")

移除指定的行名称

示例

> df[!(row.names(df) %in% row_names_df_to_remove),]

输出

       x         y
F 1.0351041 103.04182
G 0.9613700 90.65195
H 1.0240703 99.63975
I 0.9424871 97.11730
J 0.9876748 108.07684
K 1.0652311 102.14823
L 1.0196251 93.51378
M 0.9752639 100.57394
N 0.9890722 101.37151
O 0.9873279 100.37910
P 0.9564027 96.94806
Q 0.9456446 103.40934
R 0.9617322 94.89198
S 0.9956141 86.43256
T 1.0253881 101.52844

我们来看另一个示例

示例

现场演示

> set.seed(3247)
> x1<-rpois(20,1)
> x2<-rpois(20,5)
> df1<-data.frame(x1,x2)
> df1

输出

x1 x2
1 3 5
2 1 8
3 3 3
4 0 6
5 2 2
6 1 6
7 0 1
8 2 2
9 1 3
10 0 4
11 3 1
12 0 4
13 0 5
14 1 4
15 1 3
16 1 7
17 2 3
18 0 0
19 1 3
20 0 5

示例

> row.names.df1<-c(1:5)
> df1[!(row.names(df1) %in% row.names.df1),]

输出

x1 x2
6 1 6
7 0 1
8 2 2
9 1 3
10 0 4
11 3 1
12 0 4
13 0 5
14 1 4
15 1 3
16 1 7
17 2 3
18 0 0
19 1 3
20 0 5

更新日期:2020 年 11 月 23 日

14K+ 次浏览

开启您的 职业生涯

完成课程,获得认证

开始
广告