簡體   English   中英

如何從R中的數據幀的前n行刪除條件下的行

[英]How to delete rows under a condition from first n rows of a data frame in 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行中刪除

我們可以使用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),])

我們可以使用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)

我的解決方案只使用基礎包。 一點點的黑客,但它工作正常。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM