将data.frame的摘要转换为dataframe
如何将data.frame上运行的摘要转换为data.frame本身?我需要一个data.frame作为RMarkdown中knitr::kable的输出 特别是我有这个数据帧将data.frame的摘要转换为dataframe,r,dataframe,datatable,type-conversion,summary,R,Dataframe,Datatable,Type Conversion,Summary,如何将data.frame上运行的摘要转换为data.frame本身?我需要一个data.frame作为RMarkdown中knitr::kable的输出 特别是我有这个数据帧 d <- data.frame(a=c(1,2,3), b=c(4,5,6)) ds <- summary(d) class(ds) # returns "table" 其中的代码也不起作用: df.df2 <- data.frame(unclass(summary(ds.df))
d <- data.frame(a=c(1,2,3), b=c(4,5,6))
ds <- summary(d)
class(ds)
# returns "table"
其中的代码也不起作用:
df.df2 <- data.frame(unclass(summary(ds.df)), check.names = FALSE, stringsAsFactors = FALSE)
print(df.df2)
# Output equally messed up
as.data.frame.matrix
将“Min”和统计信息的其他名称放在每个单元格中,而不是行名称:
ds.df3 <- as.data.frame.matrix(ds)
print(ds.df3)
# Returns "Min" and "1sd Qu." inside the cell
# instead of them being row names
ds.df3我们可以使用矩阵
路径
out <- as.data.frame.matrix(ds)
row.names(out) <- NULL
如果我们需要min
etc作为行名,则使用sapply
循环列,并应用summary
as.data.frame(sapply(d, summary))
-输出
out
a b
1 Min. :1.0 Min. :4.0
2 1st Qu.:1.5 1st Qu.:4.5
3 Median :2.0 Median :5.0
4 Mean :2.0 Mean :5.0
5 3rd Qu.:2.5 3rd Qu.:5.5
6 Max. :3.0 Max. :6.0
a b
Min. 1.0 4.0
1st Qu. 1.5 4.5
Median 2.0 5.0
Mean 2.0 5.0
3rd Qu. 2.5 5.5
Max. 3.0 6.0
没错,这不是预期的结果。我希望“Min”作为行名称,而不是在cell@robertspierre我不确定您需要什么格式的输出。我假设长格式不是您想要的,我需要“Min”、“1st Qu”作为行名,“a”和“b”作为列名,并且只需要单元格中的数字。是的,它可以工作。非常感谢:)如果它解决了您的问题,我们鼓励您通过单击复选标记来接受它…好吧,您链接到的帖子中的相同答案建议do.call(cbind,lappy(d,summary))
这似乎对您的情况有效。@Ronaksha是的,但我更喜欢summary返回的对象的真正转换(df)
。
as.data.frame(sapply(d, summary))
a b
Min. 1.0 4.0
1st Qu. 1.5 4.5
Median 2.0 5.0
Mean 2.0 5.0
3rd Qu. 2.5 5.5
Max. 3.0 6.0