gpt4 book ai didi

r - 通过查看最后一组来有条件地确定列的值

转载 作者:行者123 更新时间:2023-12-03 14:15:40 30 4
gpt4 key购买 nike

我有如下所示的测试数据:

   Group Value
1 a 1
2 a 2
3 a 3
4 a 4
5 b 5
6 b 2
7 b 3
8 c 6
9 c 7
10 c 8
11 c 3
12 c 6
13 d 9
14 d 10
15 e 9

我正在尝试创建一种矢量化方法,最好使用 tidyverse将创建一个附加列的工具,该列记录该值是否存在于上一个分组中。下面是一个示例:
   Group Value In_Last_Group
1 a 1 FALSE
2 a 2 FALSE
3 a 3 FALSE
4 a 4 FALSE
5 b 5 FALSE
6 b 2 TRUE
7 b 3 TRUE
8 c 6 FALSE
9 c 7 FALSE
10 c 8 FALSE
11 c 3 TRUE
12 c 5 TRUE
13 d 9 FALSE
14 d 10 FALSE
15 e 9 TRUE

我有一种使用标准 for 循环来做到这一点的方法,但我有一个很大的数据集,我相信如果它被矢量化会快得多。任何帮助,将不胜感激。

这是 dput测试数据:
structure(list(Group = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 
3L, 3L, 3L, 3L, 3L, 4L, 4L, 5L), .Label = c("a", "b", "c", "d",
"e"), class = "factor"), Value = c(1, 2, 3, 4, 5, 2, 3, 6, 7,
8, 3, 6, 9, 10, 9)), .Names = c("Group", "Value"), row.names = c(NA,
-15L), class = "data.frame")

最佳答案

我们可以nest按'Group'分组后,然后删除'data'列的第一个和最后一个元素,使用map2对相应元素进行比较,然后附加 FALSE第一组元素

library(dplyr)
library(purrr)
df2 <- df1 %>%
group_by(Group) %>%
nest

flag <- map2(df2$data[-1], df2$data[-nrow(df2)], ~
.x$Value %in% .y$Value) %>%
unlist
df1$Last_Group <- c(rep(FALSE, nrow(df2$data[[1]])), flag)

关于r - 通过查看最后一组来有条件地确定列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60875937/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com