我想将组的最后一个值更新为该组中的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] 删除。
我来说两句