我刚开始使用 R,遇到了一个问题。
我有一个格式如下的数据集:
ID | 重量 | 性别 | 类别 |
---|---|---|---|
1 | 40 | 1 | 2 |
2 | 50 | 2 | 1 |
我想得到的是一个按类别分类的表格:
类别 1 | 类别 2 | |
---|---|---|
权重平均值 | 66.00 | 99.00 |
女性百分比 | 15.00 | 22.00 |
任何想法如何获得它?我正在尝试使用 data.table,但在我尝试对其进行分组后,两个类别的 % 保持不变。
dt[,list("mean weight"=mean(weight), "% of females" = setDT( DATASET)[ , 100 * nrow( DATASET[sex==1]) / nrow(DATASET) ]), by=c("category")]
答案 0 :(得分:0)
tidyverse 中的 group_by()
和 summarise()
函数是一种非常强大的数据汇总方法。
library(tidyverse)
group_by(df,Category) %>%
summarise("Mean of weight" = mean(Weight),
"% of females" = round(100*sum(Sex==2)/n(),digits=2))
请注意,生成的表格与您描述的表格相比是转置的。
在探索性数据分析中,我也使用包 table1。给你一个漂亮的 HTML 表格。
library(table1)
table1(~Weight+(Sex==2)|Category,data=df)
以下是有关 table1 包的更多信息:https://cran.r-project.org/web/packages/table1/vignettes/table1-examples.html
答案 1 :(得分:0)
包 <tbody>
<tr>
<td style="width: 12%; padding: 0px;" class="hide_on_mobile"> </td>
<td style="width: 66.1667%; text-align: center; padding: 0px 10px 15px;" class="adonmobile2">
<ul>
<li style="color: #090a0a; margin: 10px; padding: 0px; font-family: Avenir, Arial, san-serif; line-height: 150%; text-align: left;"><span class="font" style="color: #000000; font-size: 18px;">Premium-grade stainless-steel interiors</span></li>
<li style="color: #090a0a; margin: 10px; padding: 0px; font-family: Avenir, Arial, san-serif; line-height: 150%; text-align: left;"><span class="font" style="color: #000000; font-size: 18px;">WiFi-enabled capabilities across the entire collection</span></li>
<li style="color: #090a0a; margin: 10px; padding: 0px; font-family: Avenir, Arial, san-serif; line-height: 150%; text-align: left;"><span class="font" style="color: #000000; font-size: 18px;">Award-winning theater-style lighting</span></li>
<li style="color: #090a0a; margin: 10px; padding: 0px; font-family: Avenir, Arial, san-serif; line-height: 150%; text-align: left;"><span class="font" style="color: #000000; font-size: 18px;">Thermador exclusive Diamond Ice</span></li>
<li style="color: #090a0a; margin: 10px; padding: 0px; font-family: Avenir, Arial, san-serif; line-height: 150%; text-align: left;"><span class="font" style="color: #000000; font-size: 18px;">Intuitive Push-to-Open doors</span></li>
</ul>
</td>
<td style="width: 18.8333%; padding: 0px;" class="hide_on_mobile"> </td>
</tr>
</tbody>
在这里很有帮助:
dplyr
输出:
dat<-data.frame(Weight=c(40,50,60,40,30,50), Sex=factor(c(1,2,2,1,1,2)), Category=as.factor(c(2,1,2,1,2,1)))
library(dplyr)
Table<-dat %>% dplyr::group_by(Category) %>% dplyr::summarise(
Mean.of.Weight=mean(Weight),
Perc.Female=length(which(Sex==1))/length(Sex)
)
Table
如果要转置:
Category Mean.of.Weight Perc.Female
<fct> <dbl> <dbl>
1 1 46.7 0.333
2 2 43.3 0.667