r - 如何将列表转换为具有重新排列和单独命名列的复杂表?
问题描述
我有一个包含 30 个数据框的列表(称为列表),这些数据框都有各自的名称(以公司命名)并由回归的输出组成。数据框都是这样的:
term estimate std.error statistic p.value
(Intercept) 0.0012 0.000 2.84 0.00
x$Return 0.8119 0.055 14.49 1.08
x$ReturnDum 0.2989 0.083 0.10 0.05
对于我的输出,我需要一个带有回归表的(pdf 或 png)文件,其中包含上述所有输出。该表应如下所示:
Firm (Intercept) x$Return x$ReturnDum
Firm1 0.0012 0.8119 0.2989
(0.000)*** (0.055) (0.083)**
Firm2 0.0242 0.2359 0.0239
(0.000)*** (0.050)** (0.909)
...
基本上,它应该包含四列(称为公司、(拦截)、x$Return 和 x$ReturnDum)和 30 行,每个公司一行。每行应包含公司名称(在公司下)、估计值和每个剩余列的 std.error 值(最好与重要性星一起 - p.value < 0.01 为 3 星,p.value < 0.01 为 2 星p.value < 0.05 和 p.value < 0.1 的 1 星,以上所有内容都没有星)。
我还没有弄清楚如何将我的列表转换成这种表格,并且由于我仍然是 R 的初学者,因此我将不胜感激!谢谢。
解决方案
我们可以使用map
frompurrr
循环遍历list
data.framemutate
列 'std.error'通过在小于 0.25时format
连接成字符串,否则将列作为类型(检查类型)返回,感兴趣的列,转置( ),转换为data.frame,并根据名称创建一个id列'Firm' (默认情况下,如果没有名称,则添加序号)。请注意,返回 a ,而后缀将其转换为通过绑定元素的行输出的单个 data.frame"***"
p.value
character
case_when
select
t
list
map
list
_df
list
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")
推荐阅读
- python - 置信区间 3 维图
- postgresql - 是否有替代方法可以在 PostgreSQL 中使用一个临时表进行更新插入操作?
- npm - 纱线锁文件资源源从 registry.yarnpkg.com 更改为 registry.npmjs.org
- javascript - 多个变量之间的toogle不起作用?
- javascript - 使用 Vue2Leaflet 的 l-popup 组件调整传单弹出窗口的宽度
- google-analytics - 在网站上同时安装谷歌标签管理器、谷歌优化和谷歌分析?
- python - 如何从页面中提取信息
- vue.js - 道具参数在设置中没有反应
- arrays - 无法在 TypeScript 中执行连接
- linux - Linux zip:可以防止使用非 ASCII(7 位)字符的文件名吗?