删除 R 中具有特定条件的行
Delete rows with specific conditions in R
我的数据框是ABC:
C1 C2 C3
L1 38 53 63
L2 9 44 75
L3 57 57 96
L4 41 78 3
L5 81 39 65
L6 16 19 97
L7 13 95 65
L8 44 28 71
L9 14 66 66
L10 6 45 90
我想保留 C3 中具有最高五个值的行,并删除其余行。所以,最终的输出应该是:
C1 C2 C3
L6 16 19 97
L3 57 57 96
L10 6 45 90
L2 9 44 75
L8 44 28 71
我应该使用 if 函数吗?
您可以使用 order
:
ABC[head(order(-ABC$C3), 5), ]
# C1 C2 C3
#L6 16 19 97
#L3 57 57 96
#L10 6 45 90
#L2 9 44 75
#L8 44 28 71
在 dplyr
中,您可以使用 top_n
:
library(dplyr)
ABC %>% top_n(5, C3)
或arrange
和slice
ABC %>% arrange(desc(C3)) %>% slice(1:5)
数据
ABC <- structure(list(C1 = c(38L, 9L, 57L, 41L, 81L, 16L, 13L, 44L,
14L, 6L), C2 = c(53L, 44L, 57L, 78L, 39L, 19L, 95L, 28L, 66L,
45L), C3 = c(63L, 75L, 96L, 3L, 65L, 97L, 65L, 71L, 66L, 90L)),
class = "data.frame", row.names = c("L1", "L2", "L3", "L4", "L5",
"L6", "L7", "L8", "L9", "L10"))
你也可以在dplyr中使用filter()
,比如;
library(dplyr)
data("iris")
# filter sepal.length greater than 1
iris %>%
group_by(Species) %>%
filter(Sepal.Length>1)
结果
# A tibble: 150 x 5
# Groups: Species [3]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
我的数据框是ABC:
C1 C2 C3
L1 38 53 63
L2 9 44 75
L3 57 57 96
L4 41 78 3
L5 81 39 65
L6 16 19 97
L7 13 95 65
L8 44 28 71
L9 14 66 66
L10 6 45 90
我想保留 C3 中具有最高五个值的行,并删除其余行。所以,最终的输出应该是:
C1 C2 C3
L6 16 19 97
L3 57 57 96
L10 6 45 90
L2 9 44 75
L8 44 28 71
我应该使用 if 函数吗?
您可以使用 order
:
ABC[head(order(-ABC$C3), 5), ]
# C1 C2 C3
#L6 16 19 97
#L3 57 57 96
#L10 6 45 90
#L2 9 44 75
#L8 44 28 71
在 dplyr
中,您可以使用 top_n
:
library(dplyr)
ABC %>% top_n(5, C3)
或arrange
和slice
ABC %>% arrange(desc(C3)) %>% slice(1:5)
数据
ABC <- structure(list(C1 = c(38L, 9L, 57L, 41L, 81L, 16L, 13L, 44L,
14L, 6L), C2 = c(53L, 44L, 57L, 78L, 39L, 19L, 95L, 28L, 66L,
45L), C3 = c(63L, 75L, 96L, 3L, 65L, 97L, 65L, 71L, 66L, 90L)),
class = "data.frame", row.names = c("L1", "L2", "L3", "L4", "L5",
"L6", "L7", "L8", "L9", "L10"))
你也可以在dplyr中使用filter()
,比如;
library(dplyr)
data("iris")
# filter sepal.length greater than 1
iris %>%
group_by(Species) %>%
filter(Sepal.Length>1)
结果
# A tibble: 150 x 5
# Groups: Species [3]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa