删除数据框中的最后一行

时间:2014-05-11 15:35:11

标签: r dataframe difference-between-rows

我有一个数据框,可以通过以下示例df近似:

a  <- seq(1, 1010, 1)
b  <- seq(2,1011,1)
c  <- c(rep(1,253), rep(2, 252), rep(3,254), rep(4,251))
d  <- c(rep(5,253), rep(6, 252), rep(7,254), rep(8,251))
df <- data.frame(a,b,c,d)

首先,我根据列c和d对观察进行分组。然后我想在每组中有相同数量的观察结果(n = 250)。基本上,我想删除每个组的最后几行,如果它们超过250的阈值。

使用if非常容易,但确实需要花费大量时间。 任何帮助将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

使用package plyr的示例:

library(plyr)
ddply(df, .(c, d), function(DF) head(DF, 250))

答案 1 :(得分:1)

由于速度似乎是一个问题,您可以使用比dplyr更快的plyr

require(dplyr)
df %.% group_by(c,d) %.% mutate(count = 1:n()) %.% filter(count <= 250)
df$count <- NULL