gpt4 book ai didi

r - 使用 dplyr 子集嵌套数据框

转载 作者:行者123 更新时间:2023-12-04 10:53:14 24 4
gpt4 key购买 nike

我想用 dplyr 对嵌套数据框的内部数据框进行子集化?

我有以下嵌套数据框:

library(dplyr)

# Initialise nested data frame
d <- tibble(group = c("A", "B"),
data = rep(list(NA), 2))

set.seed(1)
d$data[[1]] <- data.frame(x = seq(1:10),
y = rnorm(10))
d$data[[2]] <- data.frame(x = seq(1:15),
y = rnorm(15),
z = runif(15))

假设我只想要 group == "A" 的数据框中的行哪里 y >= 0 , 而 group == B 的数据框保持完整。 编辑:两个结果数据帧在操作后应该具有相同的变量。

我正在考虑做类似下面这行但结合 mutate 命令的事情,但是 filter(y >= 0)在这里不起作用。那么,我该怎么做呢?
d %>% filter(group == "A") %>% select(data) %>% filter(y >= 0)

最佳答案

我们可以做 filter在里面 map2

library(tidyverse)
d %>%
mutate(data = map2(group, data, ~
.y %>%
filter(!(.x == "A" & y < 0))))
# A tibble: 2 x 2
# group data
# <chr> <list>
#1 A <data.frame [6 × 2]>
#2 B <data.frame [15 × 3]>

使用反向比较,它将是
out <- d %>%
mutate(data = map2(group, data, ~
.y %>%
filter((.x == "A" & y >=0)|.x != "A")))
out
# A tibble: 2 x 2
# group data
# <chr> <list>
#1 A <data.frame [6 × 2]>
#2 B <data.frame [15 × 3]>

map(d$data, dim)
#[[1]]
#[1] 10 2

#[[2]]
#[1] 15 3

map(out$data, dim)
#[[1]]
#[1] 6 2

#[[2]]
#[1] 15 3

关于r - 使用 dplyr 子集嵌套数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50783512/

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