如何使用行名删除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

使需要删除的行名成为向量:

示例

> 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

以上是 如何使用行名删除R数据框中的行? 的全部内容, 来源链接: utcz.com/z/343263.html

回到顶部