如何使用行名称移除 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
广告