Мы можем использовать map
из purrr
для циклического перебора list
, mutate
столбца data.frame 'std.error' в format
в строку путем объединения "***"
, когда p.value
меньше 0,25 или возвращает столбец как character
тип (case_when
тип проверки), select
интересующий столбец, транспонировать (t
), преобразовать в data.frame и создать столбец id «Фирма» основана на именах list
(по умолчанию, если имен нет, добавляется порядковый номер). Обратите внимание, что map
возвращает list
, в то время как суффикс _df
преобразует его в один вывод data.frame путем связывания строки list
elements
library(tidyverse)
map_df(lst1, ~
.x %>%
mutate(std.error = case_when(p.value < 0.05 ~
str_c("(", std.error, ")", "***"),
TRUE ~ as.character(std.error)),
estimate = round(estimate, 3)) %>%
select(estimate, std.error) %>%
t %>%
as.data.frame , .id = 'Firm')
Для нескольких категорий более простым вариантом является cut
или findInterval
map_df(lst1, ~
.x %>%
mutate(std.error = str_c("(", round(std.error, 3), ")",
c("****", "***", "**", "*")[findInterval(p.value,
c(0.01, 0.05, 0.1))+1]),
estimate = round(estimate, 3)) %>%
select(estimate, std.error) %>%
t %>%
as.data.frame %>%
rename_all(~ c("Intercept)", "x$Return", "x$ReturnDum")), .id = "Firm")