r - 删除/删除每组 R 中的最后/第一行

标签 r group-by

这是我的数据框:

categ <- c('a','a','a','b','b')
value <- c(1,2,5,4,5)
df <- data.frame(categ, value)

我想通过 categ 分组列并删除每个组中的第一个/最后一个元素。理想情况下,我想创建一个列,指示每个组中的第一个/最后一个元素。这是我尝试过的,但没有奏效:
library('plyr')
ddply(df, .(categ), function(x) x[-nrow(x)])

附言这可能是重复的问题,但我是 R 的新手,而且 R 非常神秘,所以我无法立即移植解决方案。

最佳答案

有一个更简单的解决方案,使用 {dplyr} 删除每组的第一行:

library(dplyr)    
df %>% 
       group_by(categ) %>% 
       slice(2:n())

删除每组的最后一行:
df %>% 
    group_by(categ) %>% 
    slice(1:(n()-1))

关于r - 删除/删除每组 R 中的最后/第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41069925/

相关文章:

r - 根据过去的值创建新的数据框列

r - R中许多矩阵的乘法

R:随机 split 的递归树算法

sql - RODBC 包 : How to get a logical value for the "Does the Table Exists?" query type?

MySQL,分组依据和最新结果

sql - 来自重复行的总和值

regex - r + 搜索字符串并返回值

python - 在不更改组顺序的情况下按第一个值对组进行排序

mysql - 计算mysql中的连续数字,分组

python - 查找两个数据帧的两列之间的额外内容 - 相减