gpt4 book ai didi

r - DF 作为矩阵的总结

转载 作者:行者123 更新时间:2023-12-03 08:46:51 26 4
gpt4 key购买 nike

我已经找了很长一段时间了,但找不到一个简单的方法。我有一个仅由数值组成的 df,我想从我的 df 中创建一个汇总矩阵。

DF
V1 V2 V3 V4 V5 ...
x1 y1 z1 1 c1
x2 NA z2 0 c2
x3 y3 z3 1 NA
...

V4 最初是一个 TRUE/FALSE 变量,转换为通常应该起作用的数值变量。我想获得以下内容:

    N   Mean  SD  Min  1st  Median  3rd  Max
V1
V2
V3
V4
V5
...

具有 N、平均值、SD、最小值、第一、中值、第三、最大值的相应值。我尝试过简单的as.data.frame(summary(DF))我尝试过 stargazer,但由于某种原因不起作用(我猜测是因为我有二元变量)

stargazer(DF, type= "html", nobs = TRUE, type="html", mean.sd = TRUE, median = TRUE, iqr = TRUE,
+ digits=2, align=T)

我读到了一些关于 qwraps2_summary_table 的内容。但他们似乎都给出了与我正在寻找的不同的 table “设计”。

我知道我也可以运行一个循环,例如:

for(i in (1:length(DF)){
sum$N<-(????)
sum$Mean<-mean(DF[i])
....}

但这不是最好的解决方案。有什么建议吗?谢谢!

这是我的数据集的一部分

structure(list(Year = c(2011, 2012, 2013, 2014, 2015, 2016, 2017, 
2018, 2018, 2011), Occurences = c(9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 2L, 9L), Balance = c(-1.14, 1.05, -1.06, 1.01, 1.01, 1.01,
-1.09, -1, -1.04, -1.03), Withdrawal = c(43200, 41080, 43400,
43183, 42600, 42100, 45900, 46000, 3892008, 48374), Verification_SA = c(NA,
NA, NA, NA, 1, 1, NA, 1, 1, NA), Classification_num = c(NA, NA,
NA, NA, 3, 2, NA, 4, 4, NA), Interaction_Verification_Classification = c(NA,
NA, NA, NA, 3, 2, NA, 4, 4, NA), KnowledgeSources = c(1, 1, 1,
0, 1, 1, 1, 1, 1, 0), KnowledgeDischarge = c(0, 0, 0, 0, 0, 1,
1, 1, 1, 0), Scarcity_watershed = c(NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_
), Scarcity_country = c(NA, NA, NA, NA, NA, NA, NA, NA, 3.35,
NA), Knowledge_Watershed = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Knowledge_Facilities = c(0,
0, 0, 0, 0, 0, 0, 0, 1, 1), Importance_num = c(NA, NA, NA, 3,
3, 3, 3, 3, 5, NA), DetrimentalImpacts_num = c(0, 0, 1, 0, 0,
0, 0, 0, 0, 0), Responsibility_num = c(1, 1, 1, 2, 2, 2, 2, 3,
3, 1)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"
))

最佳答案

以 Ian Campbell 的答案为基础,我们不应该害怕在需要时构建一个汇总函数。

summaryfn <- function(x){
c(min(x),
quantile(x,0.25,na.rm=TRUE),
quantile(x,0.5,na.rm=TRUE),
mean(x,na.rm=TRUE),
sd(x, na.rm=TRUE),
quantile(x,0.75,na.rm=TRUE),
max(x,na.rm=TRUE),
sum(is.na(x)))

}

res <- do.call(rbind,lapply(df,summaryfn))
colnames(res) <- c("Min","Q1","Med","Mean","Sd","Q3","Max","NAs")



## > res
## Min Q1 Med Mean Sd Q3 Max NAs
## Year 2011.00 2012.250 2014.500 2014.500000 2.718251e+00 2016.75 2018.00 0
## Occurences 2.00 9.000 9.000 8.300000 2.213594e+00 9.00 9.00 0
## Balance -1.14 -1.055 -1.015 -0.228000 1.074800e+00 1.01 1.05 0
## Withdrawal 41080.00 42745.750 43300.000 428784.500000 1.216855e+06 45975.00 3892008.00 0
## Verification_SA NA 1.000 1.000 1.000000 0.000000e+00 1.00 1.00 6
## Classification_num NA 2.750 3.500 3.250000 9.574271e-01 4.00 4.00 6
## Interaction_Verification_Classification NA 2.750 3.500 3.250000 9.574271e-01 4.00 4.00 6
## KnowledgeSources 0.00 1.000 1.000 0.800000 4.216370e-01 1.00 1.00 0
## KnowledgeDischarge 0.00 0.000 0.000 0.400000 5.163978e-01 1.00 1.00 0
## Scarcity_watershed NA NA NA NaN NA NA -Inf 10
## Scarcity_country NA 3.350 3.350 3.350000 NA 3.35 3.35 9
## Knowledge_Watershed 0.00 0.000 0.000 0.000000 0.000000e+00 0.00 0.00 0
## Knowledge_Facilities 0.00 0.000 0.000 0.200000 4.216370e-01 0.00 1.00 0
## Importance_num NA 3.000 3.000 3.333333 8.164966e-01 3.00 5.00 4
## DetrimentalImpacts_num 0.00 0.000 0.000 0.100000 3.162278e-01 0.00 1.00 0
## Responsibility_num 1.00 1.000 2.000 1.800000 7.888106e-01 2.00 3.00 0

## > str(res)
## num [1:16, 1:8] 2011 2 -1.14 41080 NA ...
## - attr(*, "dimnames")=List of 2
## ..$ : chr [1:16] "Year" "Occurences" "Balance" "Withdrawal" ...
## ..$ : chr [1:8] "Min" "Q1" "Med" "Mean" ...

虽然在很多情况下 stargazer 是一个不错的选择,但我会推荐 xtable 因为它的灵活性。

print(xtable(res),type="html")

关于r - DF 作为矩阵的总结,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61129156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com