[英]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.