【问题标题】:add_rownnames works, but rownames_to_column does notadd_rownnames 有效,但 rownames_to_column 无效
【发布时间】:2020-09-01 16:48:21
【问题描述】:

我有一个大型数据框,我使用 describe 来创建一个新的摘要数据框

 df_sum <- describe(df[my_subset])

我检查 df_sum 是否有行名

has_rownames(df_sum)
[1] TRUE
Browse[2]> rownames(df_sum)
 [1] "Q1"                "Q2"                "Q3"                "Q4"                "Q5"               
 [6] "Q6"                "Q7"                "Q8"                "Q9"                "Q10"              

我现在尝试将这些行名变成一个新列

Browse[2]> rownames_to_column(df_sum, var = "Test")
Error in Math.data.frame(list(Test = c("Q1", "Q2", "Q3", "Q4", "Q5", "Q6",  : 
  non-numeric variable(s) in data frame: Test

但是,如果我使用了已弃用的函数 add_rownnames,它可以工作!

Browse[2]> add_rownames(df_sum, var = "Test")
# A tibble: 22 x 14
   Test   vars     n  mean    sd median trimmed   mad   min   max range    skew kurtosis     se
   <chr> <int> <dbl> <dbl> <dbl>  <dbl>   <dbl> <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>  <dbl>
 1 Q1        1   963  5.22  2.53      5    5.29  2.97     0    10    10 -0.216    -0.615 0.0814
 2 Q2        2   963  5.50  2.56      6    5.56  2.97     0    10    10 -0.240    -0.656 0.0826
 3 Q3        3   963  4.82  2.72      5    4.83  2.97     0    10    10 -0.0509   -0.860 0.0878
 4 Q4        4   963  4.76  3.03      5    4.73  2.97     0    10    10 -0.0102   -1.05  0.0976
 5 Q5        5   963  5.07  3.10      5    5.08  4.45     0    10    10 -0.0366   -1.16  0.100 
 6 Q6        6   963  4.13  3.18      4    3.97  4.45     0    10    10  0.250    -1.16  0.103 
 7 Q7        7   963  4.89  3.14      5    4.86  4.45     0    10    10  0.0330   -1.19  0.101 
 8 Q8        8   963  1.83  2.71      0    1.29  0        0    10    10  1.41      0.862 0.0872
 9 Q9        9   963  4.56  3.05      5    4.50  2.97     0    10    10  0.0499   -1.08  0.0982
10 Q10      10   963  4.11  2.98      4    3.95  2.97     0    10    10  0.327    -0.931 0.0962

rownames_to_column 失败并显示神秘的错误消息时,是什么让add_rownames 工作?我需要做什么来修复rownames_to_column

提前致谢

托马斯·飞利浦

【问题讨论】:

  • 请让您的问题可重现,以便人们可以提供帮助

标签: r dataframe dplyr rowname


【解决方案1】:

我需要将as.data.frame 添加到我的代码中。

df_sum <- describe(df[my_subset]) 
> class(df_sum)
[1] "psych"      "describe"   "data.frame"

如果我将rownames_to_column 应用于df_sum,则会收到我之前提到的错误消息。但是,如果我输入

df_sum <- as.data.frame(describe(df[my_subset])) 
> class(df_sum)
[2] "data.frame"

所以如果我先写

df_sum <- as.data.frame(describe(df[my_subset])) 

然后将rownames_to_column 应用到df_sum 它按预期工作。

【讨论】:

    猜你喜欢
    • 2017-01-08
    • 2012-05-08
    • 2017-03-15
    • 2014-10-30
    • 2011-03-08
    • 2013-11-27
    • 2010-11-29
    • 2017-12-13
    • 2015-01-05
    相关资源
    最近更新 更多