gpt4 book ai didi

r - Purrr 根据包含字符向量的非嵌套变量过滤嵌套数据

转载 作者:行者123 更新时间:2023-12-04 11:40:05 27 4
gpt4 key购买 nike

我有类似于df3的数据。要重现数据,请运行以下命令:

vec1 <- c("A", "B")
vec2 <- c("A", "B", "C")

df1 <- tibble::tribble(
~A, ~B,
"X", 4L,
"X", 9L,
"Y", 5L,
"Y", 2L,
"Y", 8L,
"Y", 2L) %>%
group_by(A) %>%
nest()

df2 <- tibble::tribble(
~A, ~C,
"X", vec1,
"Y", vec2)

df3 <- df1 %>% left_join(df2, by = "A")

我需要使用这样的东西过滤嵌套数据:
df4 <- df3 %>% filter(when C==vec1, B (part of nested data now) < 5 
when C==vec2, B (part of nested data now) >4)

或者可能是这样的:
df4 <- df3 %>% map(.$data, ~filter((identicle(.$C, vec1) & B < 5) | 
identical(.$C, vec2) & B >4))

我只有 df3 而我想要 df4。我应该如何使用 purrr 进行上述过滤以获得以下所需的 df4 输出。
df11 <- tibble::tribble(
~A, ~B,
"X", 4L,
"Y", 5L,
"Y", 8L) %>%
group_by(A) %>%
nest()

df4 <- df11 %>% left_join(df2, by = "A")

最佳答案

这是使用 map2 的一种选择和 identical对于条件检查:

df3 %>% 
mutate(
data = map2(
data, C, ~ if(identical(.y, vec1)) filter(.x, B < 5) else filter(.x, B > 4)
)
) %>%
identical(df4)
# [1] TRUE

关于r - Purrr 根据包含字符向量的非嵌套变量过滤嵌套数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50124514/

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