根据单元格的内容在 R 中取消嵌套
Unnest in R conditional on the cell's content
main dataframe has a column "passings". It is the only nested variable in the main dataframe. Inside it, there are dataframes (an example a nested cell)。在嵌套单元格中,行数不同,但列数相同。列名是 "date" 和 "title"。我需要的是 获取相应的日期 并将其作为新变量放入主数据框中 if title is "Закон прийнято" ("A passed law" - 翻译)。
我是编码新手。
我会感谢你的帮助!
dataframe
an example of a dataframe within a nested cell
这是一个选项,我们用 map
遍历 'passings' list
列(根据图像,它将是 list
的 2 列 data.frame
), filter
'title' 是 "Закон прийнято" 的行(假设每行只有一个值)和 pull
'date' 列来创建一个原始数据集
中的新列 'date'
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")
main dataframe has a column "passings". It is the only nested variable in the main dataframe. Inside it, there are dataframes (an example a nested cell)。在嵌套单元格中,行数不同,但列数相同。列名是 "date" 和 "title"。我需要的是 获取相应的日期 并将其作为新变量放入主数据框中 if title is "Закон прийнято" ("A passed law" - 翻译)。
我是编码新手。 我会感谢你的帮助!
dataframe an example of a dataframe within a nested cell
这是一个选项,我们用 map
遍历 'passings' list
列(根据图像,它将是 list
的 2 列 data.frame
), filter
'title' 是 "Закон прийнято" 的行(假设每行只有一个值)和 pull
'date' 列来创建一个原始数据集
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")