我有一个类似的数据框
df <- data.frame(group=c("a", "b"), value=1:16,trim=rep(1:2))
Run Code Online (Sandbox Code Playgroud)
我试图弄清楚如何删除每组的最后一行.要从每个组中删除的行数在"trim"变量中定义.
我已经想出如何使用从所有组中删除指定数量的行
x<-do.call("rbind", lapply(split(df, df$group), head,-2))
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法弄清楚如何从"trim"列中指定的组中删除行数.换句话说,我希望将a组分组以修剪最后一行,将b组修剪为最后2行.
尝试在组内提取第一个值:
x<-do.call("rbind", lapply(split(df, df$group), function(d) head(d,-d$trim[1]) ) )
Run Code Online (Sandbox Code Playgroud)
通常我会测试我的答案,但是在弹跳的火车上从iPhone上做这个.