如何从R中的数据帧的前n行删除条件下的行

时间:2017-10-18 17:35:20

标签: r

有没有办法从数据框的前n行删除某些特定条件下的某些行。 例如,我有一个数据框

        Table_Number.130.ID_HOUR Date     Time_.EST.
1                   137     480  365       1600
2                   340       0  4         1612
3                   340       0  365       1619
4                   340       0  87        1657
5                   340       0  365       1700
6                   129      60  365       1700
7                   340       0  365       1703
8                   340       0  96        1709
9                   340       0  365       1740
10                  340       0  365       1755
11                  129      60  365       1800
12                  340       0  365       1804
13                  340       0  365       1811
14                  340       0  365       1817
15                  340       0  365       1825
16                  340       0  365       1833
17                  340       0  365       1839
18                  340       0  365       1848
19                  340       0  365       1857
20                  129      60  365       1900

我想从Date> 350

的前10行中删除

3 个答案:

答案 0 :(得分:3)

我们可以使用rbind

dt <- read.table(text = "        'Table_Number.130.'' ID_HOUR' Date     'Time_.EST.'
1                   137     480  365       1600
                 2                   340       0  4         1612
                 3                   340       0  365       1619
                 4                   340       0  87        1657
                 5                   340       0  365       1700
                 6                   129      60  365       1700
                 7                   340       0  365       1703
                 8                   340       0  96        1709
                 9                   340       0  365       1740
                 10                  340       0  365       1755
                 11                  129      60  365       1800
                 12                  340       0  365       1804
                 13                  340       0  365       1811
                 14                  340       0  365       1817
                 15                  340       0  365       1825
                 16                  340       0  365       1833
                 17                  340       0  365       1839
                 18                  340       0  365       1848
                 19                  340       0  365       1857
                 20                  129      60  365       1900",
                 header = TRUE)

rbind(subset(dt[1:10,], subset = Date > 350), dt[11:nrow(dt),])

答案 1 :(得分:2)

我们可以使用dplyr包。

library(dplyr)

dt2 <- dt %>% filter(!(Date > 350 & row_number() %in% 1:10))
dt2
   Table_Number.130. X.ID_HOUR Date Time_.EST.
1                340         0    4       1612
2                340         0   87       1657
3                340         0   96       1709
4                129        60  365       1800
5                340         0  365       1804
6                340         0  365       1811
7                340         0  365       1817
8                340         0  365       1825
9                340         0  365       1833
10               340         0  365       1839
11               340         0  365       1848
12               340         0  365       1857
13               129        60  365       1900

数据

dt <- read.table(text = "        'Table_Number.130.'' ID_HOUR' Date     'Time_.EST.'
1                   137     480  365       1600
                 2                   340       0  4         1612
                 3                   340       0  365       1619
                 4                   340       0  87        1657
                 5                   340       0  365       1700
                 6                   129      60  365       1700
                 7                   340       0  365       1703
                 8                   340       0  96        1709
                 9                   340       0  365       1740
                 10                  340       0  365       1755
                 11                  129      60  365       1800
                 12                  340       0  365       1804
                 13                  340       0  365       1811
                 14                  340       0  365       1817
                 15                  340       0  365       1825
                 16                  340       0  365       1833
                 17                  340       0  365       1839
                 18                  340       0  365       1848
                 19                  340       0  365       1857
                 20                  129      60  365       1900",
                 header = TRUE)

答案 2 :(得分:2)

我的解决方案仅使用基础包。一点点的黑客,但它工作正常。

x[-x[x$Date>=350,]$Table_Number[1:10],]