【发布时间】:2022-01-07 11:28:18
【问题描述】:
让我们拨打summary(my_data):
year quarter employed newhires separations jobscreated jobsdestroyed
Min. :1990 Min. :1.000 Min. : 6976 Min. : 2321 Min. : 1922 Min. : 1091 Min. : 520
1st Qu.:2000 1st Qu.:2.000 1st Qu.: 28049 1st Qu.: 16858 1st Qu.: 13912 1st Qu.: 6595 1st Qu.: 3862
Median :2003 Median :3.000 Median : 64836 Median : 39188 Median : 32018 Median : 14148 Median : 7727
Mean :2003 Mean :2.509 Mean : 94468 Mean : 59336 Mean : 48973 Mean : 22036 Mean :11843
3rd Qu.:2007 3rd Qu.:4.000 3rd Qu.:121905 3rd Qu.: 75960 3rd Qu.: 61976 3rd Qu.: 26829 3rd Qu.:14993
Max. :2010 Max. :4.000 Max. :571419 Max. :448423 Max. :391454 Max. :166022 Max. :80338
NA's :49 NA's :49 NA's :49
我想将此输出转换为格式如下的 data.table,其中所有条目(在此描述中省略)都是 min 的原始值,第一个四分位数。等等:
year quarter employed newhires separations jobscreated jobsdestroyed
Min.
1st Qu.
Median
Mean
3rd Qu.
Max.
NA's
以下几乎达到了这个结果,除了 Min. ,第一曲。 , 中位数, 平均数, 第三曲。 , 最大限度。 , 和 NA 结转到每个条目中。我想要纯粹的原始数字。
data.frame(unclass(summary(my_data)), check.names = FALSE, stringsAsFactors = FALSE)
year quarter employed newhires separations jobscreated jobsdestroyed
X Min. :1990 Min. :1.000 Min. : 6976 Min. : 2321 Min. : 1922 Min. : 1091 Min. : 520
X.1 1st Qu.:2000 1st Qu.:2.000 1st Qu.: 28049 1st Qu.: 16858 1st Qu.: 13912 1st Qu.: 6595 1st Qu.: 3862
X.2 Median :2003 Median :3.000 Median : 64836 Median : 39188 Median : 32018 Median : 14148 Median : 7727
X.3 Mean :2003 Mean :2.509 Mean : 94468 Mean : 59336 Mean : 48973 Mean : 22036 Mean :11843
X.4 3rd Qu.:2007 3rd Qu.:4.000 3rd Qu.:121905 3rd Qu.: 75960 3rd Qu.: 61976 3rd Qu.: 26829 3rd Qu.:14993
X.5 Max. :2010 Max. :4.000 Max. :571419 Max. :448423 Max. :391454 Max. :166022 Max. :80338
X.6 <NA> <NA> <NA> NA's :49 <NA> NA's :49 NA's :49
可能的解决方案包括 (1) 直接从 summary() 导出表格,或 (2) 使用上面的输出并找到一种方法来删除 Min. ,第一曲。 , 中位数, 平均数, 第三曲。 , 最大限度。 , 和到达条目中的 NA 标签,而是将它们列为列名。非常感谢您的帮助!
【问题讨论】:
-
这能回答你的问题吗? Convert summary to data.frame
-
继续阅读答案。
do.call(cbind, lapply(mydf, summary))工作正常。至少使用 mtcars 数据集。但是我不知道 NaN 值是否可以。 -
如果您提供数据示例,我可以试试。
-
@RobertoT,这段代码(你和我的)不能很好地与
NA/NaN一起工作,因为summary使用table(..., useNA="ifany")硬编码......所以除非所有列都有至少一个,那将永远失败。另一种方法是使用fixed_summary <- function(object, ...) { o <- summary(c(object, NA), ...); o["NA's"] <- o["NA's"] - 1L; o; },然后使用as.data.frame(sapply(mtcars, fixed_summary))(使用mtcars[2,2] <- NA; mtcars[3,2] <- NaN测试)。 -
很高兴知道!我不确定。 @r2evans
标签: r dataframe data.table summary