Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何将一个列表转换成一个包含重新排列的和单独命名的列的复杂表?_R - Fatal编程技术网

R 如何将一个列表转换成一个包含重新排列的和单独命名的列的复杂表?

R 如何将一个列表转换成一个包含重新排列的和单独命名的列的复杂表?,r,R,我有一个包含30个数据帧的列表(称为list),所有数据帧都有单独的名称(以公司命名),并且由回归的输出组成。所有数据帧都如下所示: 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

我有一个包含30个数据帧的列表(称为list),所有数据帧都有单独的名称(以公司命名),并且由回归的输出组成。所有数据帧都如下所示:

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
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)
...
对于我的输出,我需要一个带有回归表的(pdf或png)文件,该回归表包含上述所有输出。该表应如下所示:

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
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)
...
基本上,它应该包含四列(称为Firm,(Intercept),x$Return和x$ReturnDum)和30行,每个Firm一行。每行应包含公司名称(在公司下)、估计值和每个剩余列的标准误差值(最好与显著性星星一起-p.value<0.01时为3颗星,p.value<0.05时为2颗星,p.value<0.1时为1颗星,以上所有内容均无星星)


我还没有弄明白如何将我的列表转换成这种表格,如果有任何帮助,我将不胜感激,因为我仍然是R的初学者!谢谢。

我们可以使用
map
purr
循环
列表
p.value
小于0.25时,通过连接
“***”
,将数据帧列“std.error”变为
格式
字符串,或者以
字符类型返回该列(
case\u当
检查类型时),
选择感兴趣的列,转置(
t
),转换为data.frame,并基于
列表的名称创建一个id列“Firm”(默认情况下,如果没有名称,则添加序号)。请注意,
map
返回一个
列表
,而后缀
\u df
通过绑定
列表
元素的行将其转换为单个data.frame输出

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')

为了避免以后的麻烦,请不要将列表称为“列表”!列表中没有
***
p.value
sync@akrun抱歉,这只是重新排列了我的数据,但它仍然在列表中,并且不是我需要的格式…@User2010S使用
map\u df
而不是
map
请显示您的代码结果以供参考a与OP的期望值进行比较。谢谢。@User2010S您可以在
t
步骤之前使用
select
。更新了post@akrun太棒了,我在中场休息时改了。非常感谢你的帮助!!!