簡體   English   中英

如何在R中的特定行號或日期之后刪除數據框的所有行?

[英]How to drop all rows of data frame after specific row number or date in R?

我有一個包含一定行數的數據框。 想要刪除特定行號之后或日期之后的所有行。

有什么建議? 暫時在網上找不到任何適合我的東西......

這是您可以執行此操作的一種方法:

df <- df[1:2, ] ## one way of selecting rows from first row to row number you want in a data frame
#  a b c       date
#1 1 2 3 2017-01-01
#2 1 2 3 2017-01-02

df <- df[-(3:nrow(df)), ] ## another way of filtering rows from starting from row which you don't want to total number of rows in a data frame
#  a b c       date
#1 1 2 3 2017-01-01
#2 1 2 3 2017-01-02

df <- df[df$date < "2017-01-03", ] ## subset based on a date value
#  a b c       date
#1 1 2 3 2017-01-01
#2 1 2 3 2017-01-02

數據

df = data.frame(a = c(1,1,4,4), b = c(2,2,5,5), c = c(3,3,6,6), 
                date = seq(from = as.Date("2017-01-01"), to = as.Date("2017-01-04"), by = 'day')) ## creating a dummy data frame

我們可以用head

n <- 5
df2 <- head(df1, n)
df2
#        date       col2
#1 2019-01-01 -0.5458808
#2 2019-02-01  0.5365853
#3 2019-03-01  0.4196231
#4 2019-04-01 -0.5836272
#5 2019-05-01  0.8474600

或者創建一個邏輯向量

df1[seq_len(nrow(df1)) <= n, ]

或者另一種選擇是slice

library(dplyr)
df1 %>%
   slice(seq_len(n))

或者使用data.table

library(data.table)
setDT(df1)[seq_len(n)]

如果它基於日期值

date1 <- as.Date("2019-05-01")
subset(df1, date <= date1)

數據

set.seed(24)
df1 <- data.frame(date = seq(as.Date("2019-01-01"), length.out = 10, 
       by = "month"), col2 = rnorm(10))

暫無
暫無

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

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