根据组汇总更改组的最后一个值

时间

我想将组的最后一个值更新为该组中的1所有值均为0我希望tidyverse解决方案可以配合我的整体工作流程使用,但也欢迎其他解决方案。下面的样本数据集有两列,group1并按group2其分组:value需要更新最后一个值的列和显示我想要的结果的结果列。我尝试对每个组的value列的总和进行调节,但无法使其起作用。谢谢

  df= structure(list(group1 = c("A", "A", "A", "A", "A", "A", "A", 
"A", "A", "B", "B", "B", "B", "B", "B", "B", "B", "B"), group2 = c("20171", 
"20171", "20171", "20171", "20171", "20172", "20172", "20172", 
"20172", "20171", "20171", "20171", "20171", "20171", "20172", 
"20172", "20172", "20172"), value = c(`0.5%` = 0L, `0.5%` = 1L, 
`0.5%` = 0L, `0.5%` = 0L, `0.5%` = 0L, `0.5%` = 0L, `0.5%` = 0L, 
`0.5%` = 0L, `0.5%` = 0L, `0.5%` = 0L, `0.5%` = 0L, `0.5%` = 0L, 
`0.5%` = 0L, `0.5%` = 0L, `0.5%` = 0L, `0.5%` = 0L, `0.5%` = 0L, 
`0.5%` = 0L), result = c(0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 
0, 1, 0, 0, 0, 1)), row.names = c(NA, -18L), class = c("tbl_df", 
"tbl", "data.frame"))
罗纳克·沙

您可以使用 :

library(dplyr)

df %>%
  group_by(group1, group2) %>%
  mutate(result1 = if(all(value == 0)) replace(value, n(), 1) else value)

#   group1 group2 value result result1
#   <chr>  <chr>  <int>  <dbl>   <dbl>
# 1 A      20171      0      0       0
# 2 A      20171      1      1       1
# 3 A      20171      0      0       0
# 4 A      20171      0      0       0
# 5 A      20171      0      0       0
# 6 A      20172      0      0       0
# 7 A      20172      0      0       0
# 8 A      20172      0      0       0
# 9 A      20172      0      1       1
#10 B      20171      0      0       0
#11 B      20171      0      0       0
#12 B      20171      0      0       0
#13 B      20171      0      0       0
#14 B      20171      0      1       1
#15 B      20172      0      0       0
#16 B      20172      0      0       0
#17 B      20172      0      0       0
#18 B      20172      0      1       1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章