这是我的数据框:
categ <- c('a','a','a','b','b')
value <- c(1,2,5,4,5)
df <- data.frame(categ, value)
Run Code Online (Sandbox Code Playgroud)
我想按categ列分组并删除每组中的第一个/最后一个元素。理想情况下,我想创建一个列,指示每个组中的第一个/最后一个元素。这是我尝试过的,但没有奏效:
library('plyr')
ddply(df, .(categ), function(x) x[-nrow(x)])
Run Code Online (Sandbox Code Playgroud)
PS 这可能是重复的问题,但我是 R 的新手,R 非常神秘,所以我无法立即移植解决方案。
Tam*_*agy 13
有一个更简单的解决方案,使用 {dplyr} 删除每组的第一行:
library(dplyr)
df %>%
group_by(categ) %>%
slice(2:n())
Run Code Online (Sandbox Code Playgroud)
删除每组的最后一行:
df %>%
group_by(categ) %>%
slice(1:(n()-1))
Run Code Online (Sandbox Code Playgroud)
小智 2
您可以改用 dplyr 包。以下代码删除每组的最后一个元素。
图书馆(dplyr)
df%>%
dplyr::group_by(类别) %>%
dplyr::mutate(等级 = 1:长度(值)) %>%
dplyr::filter(等级 < 最大(等级)) %>%
dplyr::mutate(等级 = NULL)
| 归档时间: |
|
| 查看次数: |
3384 次 |
| 最近记录: |