Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 分组,然后从一列中选择最下面一行_R_Dplyr - Fatal编程技术网

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