2017-10-18 331 views
2

有沒有辦法在數據框的前n行的特定條件下刪除某些行。 例如我有一個數據幀如何從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

我想從第一10行刪除其中日期> 350

回答

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 

DATA

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) 
+0

這是一個完美的@ycw謝謝 –

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

我知道OP沒有提供可重複的例子。但是如果你願意,可以使用我的read.table代碼來創建數據集,並用OP的例子來修改你的解決方案。 – www

2

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

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

但是表號是一個不同的字段,它不是數據框的索引 –

+0

正確的,但對於這個問題的目的,它會工作一樣。如果你想在這裏,你可以拉出並使用索引,我只是使用Table_Number,因爲它在那裏。 – CCurtis

相關問題