R 分组,然后从一列中选择最下面一行
我有一个数据集,需要按一列进行分组,然后在另一列中从该组中选择最后一行,并取第三列的平均值。 示例如下所示:R 分组,然后从一列中选择最下面一行,r,dplyr,R,Dplyr,我有一个数据集,需要按一列进行分组,然后在另一列中从该组中选择最后一行,并取第三列的平均值。 示例如下所示: df <- data.frame(id=c("a","a","a","b","b","b","c","c","c"), name=c("a1","a2","a3","b1","b2","b3","c1","c2","c3"), v=c(1,2,3,3,1,4,3,1,2)) 结果如下: id `me
df <- data.frame(id=c("a","a","a","b","b","b","c","c","c"),
name=c("a1","a2","a3","b1","b2","b3","c1","c2","c3"),
v=c(1,2,3,3,1,4,3,1,2))
结果如下:
id `mean(v)`
<fct> <dbl>
1 a 2
2 b 2.67
3 c 2
id`平均值(v)`
1 a 2
2 b 2.67
3 c 2
如何添加另一列,其中选择a3表示a,选择b3表示b,选择c3表示c?选择最后一行也可以看作是总结:
df %>%
group_by(id) %>%
summarise(mean = mean(v), name = tail(name, 1))
# A tibble: 3 x 3
# id mean name
# <fct> <dbl> <fct>
# 1 a 2 a3
# 2 b 2.67 b3
# 3 c 2 c3
df%>%
分组依据(id)%>%
总结(平均值=平均值(v),名称=尾部(名称,1))
#一个tibble:3x3
#我的意思是名字
#
#1 a 2 a3
#2 b 2.67 b3
#3 c 2 c3
以下所有操作都将起作用
library(dplyr)
df %>%
group_by(id) %>%
summarise(mean = mean(v), name = last(name))
# # A tibble: 3 x 3
# id mean name
# <fct> <dbl> <fct>
# 1 a 2 a3
# 2 b 2.67 b3
# 3 c 2 c3
df %>%
group_by(id) %>%
summarise(mean = mean(v), name = nth(name, n()))
# # A tibble: 3 x 3
# id mean name
# <fct> <dbl> <fct>
# 1 a 2 a3
# 2 b 2.67 b3
# 3 c 2 c3
df %>%
group_by(id) %>%
summarise(mean = mean(v), name = name[n()])
# # A tibble: 3 x 3
# id mean name
# <fct> <dbl> <fct>
# 1 a 2 a3
# 2 b 2.67 b3
# 3 c 2 c3
df %>%
group_by(id) %>%
summarise(mean = mean(v), name = name[length(name)])
# # A tibble: 3 x 3
# id mean name
# <fct> <dbl> <fct>
# 1 a 2 a3
# 2 b 2.67 b3
# 3 c 2 c3
库(dplyr)
df%>%
分组依据(id)%>%
总结(平均值=平均值(v),姓名=姓氏(姓名))
##tibble:3 x 3
#我的意思是名字
#
#1 a 2 a3
#2 b 2.67 b3
#3 c 2 c3
df%>%
分组依据(id)%>%
总结(平均值=平均值(v),名称=第n个(名称,n())
##tibble:3 x 3
#我的意思是名字
#
#1 a 2 a3
#2 b 2.67 b3
#3 c 2 c3
df%>%
分组依据(id)%>%
总结(平均值=平均值(v),名称=名称[n()])
##tibble:3 x 3
#我的意思是名字
#
#1 a 2 a3
#2 b 2.67 b3
#3 c 2 c3
df%>%
分组依据(id)%>%
总结(平均值=平均值(v),名称=名称[长度(名称)])
##tibble:3 x 3
#我的意思是名字
#
#1 a 2 a3
#2 b 2.67 b3
#3 c 2 c3
library(dplyr)
df %>%
group_by(id) %>%
summarise(mean = mean(v), name = last(name))
# # A tibble: 3 x 3
# id mean name
# <fct> <dbl> <fct>
# 1 a 2 a3
# 2 b 2.67 b3
# 3 c 2 c3
df %>%
group_by(id) %>%
summarise(mean = mean(v), name = nth(name, n()))
# # A tibble: 3 x 3
# id mean name
# <fct> <dbl> <fct>
# 1 a 2 a3
# 2 b 2.67 b3
# 3 c 2 c3
df %>%
group_by(id) %>%
summarise(mean = mean(v), name = name[n()])
# # A tibble: 3 x 3
# id mean name
# <fct> <dbl> <fct>
# 1 a 2 a3
# 2 b 2.67 b3
# 3 c 2 c3
df %>%
group_by(id) %>%
summarise(mean = mean(v), name = name[length(name)])
# # A tibble: 3 x 3
# id mean name
# <fct> <dbl> <fct>
# 1 a 2 a3
# 2 b 2.67 b3
# 3 c 2 c3