如何选择数据框中分组变量中的第一行和最后一行? [英] How to select the first and last row within a grouping variable in a data frame?

查看:122
本文介绍了如何选择数据框中分组变量中的第一行和最后一行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在以下数据框架中为每个唯一的 id 选择第一行和最后一行?

How can i select the first and last row for each unique id in the following dataframe?

id           d         gr     mm     area
15           1          2   3.40        1
15           1          1   4.90        2
15           1          1   4.40        1
15           1          1   5.50        2
21           1          1   4.00        2
21           1          2   3.80        2
22           1          1   4.00        2
22           1          1   4.90        2
22           1          2   4.60        2
23           1          1   2.70        2
23           1          1   4.00        2
23           1          2   3.00        2
24           1          1   3.00        2
24           1          1   2.00        3
24           1          1   4.00        2
24           1          2   2.00        3


推荐答案

A plyr 解决方案( tmp 是您的数据框架):

A plyr solution (tmp is your data frame):

library("plyr")
ddply(tmp, .(id), function(x) x[c(1, nrow(x)), ])
#    id d gr  mm area
# 1  15 1  2 3.4    1
# 2  15 1  1 5.5    2
# 3  21 1  1 4.0    2
# 4  21 1  2 3.8    2
# 5  22 1  1 4.0    2
# 6  22 1  2 4.6    2
# 7  23 1  1 2.7    2
# 8  23 1  2 3.0    2
# 9  24 1  1 3.0    2
# 10 24 1  2 2.0    3

dplyr (见另外此处):

library("dplyr")
tmp %>%
group_by(id) %>%
slice(c(1, n())) %>%
ungroup()
# # A tibble: 10 × 5
#       id     d    gr    mm  area
#    <int> <int> <int> <dbl> <int>
# 1     15     1     2   3.4     1
# 2     15     1     1   5.5     2
# 3     21     1     1   4.0     2
# 4     21     1     2   3.8     2
# 5     22     1     1   4.0     2
# 6     22     1     2   4.6     2
# 7     23     1     1   2.7     2
# 8     23     1     2   3.0     2
# 9     24     1     1   3.0     2
# 10    24     1     2   2.0     3

这篇关于如何选择数据框中分组变量中的第一行和最后一行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆