根据特定计算擦除数据帧上的行

时间:2018-06-12 15:16:20

标签: r

我有一个这样的数据框:

mydata

我想基于IDNumber和#Paymts擦除特定数量的行。

基本上我想为每个IDNumber 仅保留最后两行。例如,对于IDNumber = 230,我有5行(在#Paymts列中指示),我想要擦除所有第一行并保持最后两行。

有什么想法吗? 提前致谢!

2 个答案:

答案 0 :(得分:0)

我们可以使用slice

library(dplyr)
df1 %>%
   group_by(IDNumber) %>%
   slice(tail(row_number(), 2)) #or
   #slice((n()-1):n())

数据

set.seed(24)
df1 <- data.frame(IDNumber = rep(LETTERS[1:3], each = 5), Date = Sys.Date(), 
   `#Paymts` = sample(1:9, 15, replace = TRUE), check.names = FALSE)

答案 1 :(得分:0)

你可以这样做:

trimmed_df = df[unlist(tapply(rownames(df), df$id_number, tail,  2)), ]