首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在更大的数据集中为子组的子组生成摘要统计信息(类似于心理::describeBy)?

问如何在更大的数据集中为子组的子组生成摘要统计信息(类似于心理::describeBy)?
EN

Stack Overflow用户
提问于 2020-01-19 15:46:00
回答 1查看 444关注 0票数 0

新的R(生物统计)在这里!我有一个巨大的数据集,并且正在使用来自心理包的describe()和describeBy()。但我也试图找到一种方法来为子组中的子组做基本的统计。

例如,我的数据集是关于在一个有中国和印度成员的俱乐部内的成员。其他变量包括性别、年龄、身高、体重、BMI等。

我计算出了psych::describeBy,以查看由一个变量(例如种族)定义的子组的均值和标准差,但我不知道如何进一步缩小这一范围,以便我只为中国男性成员生成一个摘要。

我尝试使用subset()函数重新定义,然后再次运行describeBy。

代码语言:javascript
复制
chinese <- subset(maindata, chinese=1)
describeBy(chinese, male=1)

但这是行不通的,结果与describeBy(maindata,chinese=1)一样,而不是中国男性的子集。

我希望这是有意义的。

我唯一能想到的其他解决方案是在MS中将我的主数据集分解成较小的数据集,然后分别重新上传每个数据集(例如Chinese.xls、Indian.xls),或者创建一个由种族组合定义的新变量,例如Chinesemale=1、Chinesefemale=2、Indianmale=3、Indianfemale=4。

我或多或少需要分析这些子组的t测试和Fisher的准确,所以任何好的一揽子建议,将有助于解决这些问题,将不胜感激!

提前谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-19 15:59:45

样本数据

代码语言:javascript
复制
df1 <- data.frame(subject = c(1, 2, 3, 4, 5),
                  chinese = c(1, 1, 1, 0, 0),
                  male = c(1, 0, 1, 0, 1),
                  value = c(45, 23, 84, 11, 12))

代码中的两个语法更改:

  • 在subset()中的双重等号。如果要为名为chinese.
  • In describeBy()的参数赋值1,则使用单个等号,group参数为该列中的每个类别提供不同的汇总统计信息(如下所示)。不能将它用于male=1.

的子集

代码语言:javascript
复制
chinese <- subset(df1, chinese == 1)

describeBy(chinese, group = "male")

 Descriptive statistics by group 
group: 0
        vars n mean sd median trimmed mad min max range skew kurtosis se
subject    1 1    2 NA      2       2   0   2   2     0   NA       NA NA
chinese    2 1    1 NA      1       1   0   1   1     0   NA       NA NA
male       3 1    0 NA      0       0   0   0   0     0   NA       NA NA
value      4 1   23 NA     23      23   0  23  23     0   NA       NA NA
------------------------------------------------------------------------------------------------------------------------------------- 
group: 1
        vars n mean    sd median trimmed   mad min max range skew kurtosis   se
subject    1 2  2.0  1.41    2.0     2.0  1.48   1   3     2    0    -2.75  1.0
chinese    2 2  1.0  0.00    1.0     1.0  0.00   1   1     0  NaN      NaN  0.0
male       3 2  1.0  0.00    1.0     1.0  0.00   1   1     0  NaN      NaN  0.0
value      4 2 64.5 27.58   64.5    64.5 28.91  45  84    39    0    -2.75 19.5

如果只想在示例中查看男性的汇总统计数据,可以将& male == 1添加到subset()中。

代码语言:javascript
复制
chinese <- subset(df1, chinese == 1 & male == 1)

describeBy(chinese)

        vars n mean    sd median trimmed   mad min max range skew kurtosis   se
subject    1 2  2.0  1.41    2.0     2.0  1.48   1   3     2    0    -2.75  1.0
chinese    2 2  1.0  0.00    1.0     1.0  0.00   1   1     0  NaN      NaN  0.0
male       3 2  1.0  0.00    1.0     1.0  0.00   1   1     0  NaN      NaN  0.0
value      4 2 64.5 27.58   64.5    64.5 28.91  45  84    39    0    -2.75 19.5
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59811659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档