R的巢状状态取决于单元格的内容

时间:2019-11-18 21:52:08

标签: r nested unnest

main dataframe有一列“ passings”。它是主数据框中唯一的嵌套变量。内部有数据帧(an example a nested cell)。在嵌套单元格中,行数变化,但列数相同。列名称是“日期”和“标题”。我需要的是获取相应的日期,并将其作为新变量如果标题为“Законприйнято”(“通过的法律”-翻译)放在主数据框中。

我是编码方面的新手。 感谢您的帮助!

dataframe an example of a dataframe within a nested cell

1 个答案:

答案 0 :(得分:1)

这里是一个选项,其中我们用list遍历“通过” map列(根据图像,它是2列list中的data.frame ),filter“标题”为“Законприйнято”的行(假设每行仅一个值),pull“日期”列在原始行中创建新列“日期”数据集

library(dplyr)
library(purrr)
df1 %>%
   mutate(date = map_chr(passings, ~ .x %>%
                                       filter(title == "Закон прийнято") %>%
                                       pull(date)))

#   id passed                                     passings       date
#1 54949   TRUE 2015-06-10, 2015-06-08, abcb, Закон прийнято 2015-06-08
#2 55009   TRUE  2015-06-10, 2015-09-08, bcb, Закон прийнято 2015-09-08

注意:它按预期工作。

数据

df1 <- structure(list(id = c(54949, 55009), passed = c(TRUE, TRUE), 
    passings = list(structure(list(date = c("2015-06-10", "2015-06-08"
    ), title = c("abcb", "Закон прийнято")), class = "data.frame", row.names = c(NA, 
    -2L)), structure(list(date = c("2015-06-10", "2015-09-08"
    ), title = c("bcb", "Закон прийнято")), class = "data.frame", row.names = c(NA, 
    -2L)))), row.names = c(NA, -2L), class = "data.frame")