问题描述
我有一个很大的数据框,可以使用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
当add_rownames
失败并显示该错误消息时,是什么使rownames_to_column
工作?我该怎么做才能修复rownames_to_column
?
预先感谢
托马斯·飞利浦
解决方法
我需要在代码中添加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
,它按预期工作。