我有一个这样的数据框:
我想基于IDNumber和#Paymts擦除特定数量的行。
基本上我想为每个IDNumber 仅保留最后两行。例如,对于IDNumber = 230,我有5行(在#Paymts列中指示),我想要擦除所有第一行并保持最后两行。
有什么想法吗? 提前致谢!
答案 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)), ]