如何在更大的数据集中为子组的子组生成汇总统计信息(类似于 psych::describeBy)?
How to generate summary statistics (similar to psych::describeBy) for subgroups of subgroups, within a larger dataset?
这里是 R(用于生物统计)的新手!我有一个巨大的数据集,并且正在使用 psych 包中的 describe()
和 describeBy()
。但我也在尝试找到一种方法来对子组中的子组进行基本统计。
例如,我的数据集是关于一个俱乐部的会员资格,该俱乐部有中国和印度会员。其他变量包括性别、年龄、身高、体重、BMI 等。
我想出了 psych::describeBy
来查看由一个变量定义的子组的均值和标准差,例如种族,但我不知道如何进一步缩小范围,以便为中国 男性 成员生成摘要 仅 。
我尝试使用 subset()
函数重新定义,然后再次 运行 describeBy
,例如
chinese <- subset(maindata, chinese=1)
describeBy(chinese, male=1)
但这并没有奏效,结果与describeBy(maindata,chinese=1)
相同,而不是中国男性子集。
我希望这是有道理的。
我能想到的唯一其他解决方案是在 MS Excel 中将我的主要数据集分解为较小的数据集,然后分别重新上传(例如 Chinese.xls、Indian.xls),或者创建一个由种族性别组合定义的新变量,例如Chinesemale=1, Chinesefemale=2, Indianmale=3, Indianfemale=4.
我或多或少需要通过这些子组的子组进行 t 检验和 Fisher 精确分析,所以任何有助于解决这些问题的好的包装建议都将不胜感激!
提前致谢!!
示例数据
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
等于 1 的行。如果您将值 1 分配给名为 chinese
. 的参数,则可以使用单个等号
- 在
describeBy()
中,group
参数为您提供该列中每个类别的不同摘要统计信息(如下所示)。您不能将它用于 male=1 的子集。
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()
:
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
这里是 R(用于生物统计)的新手!我有一个巨大的数据集,并且正在使用 psych 包中的 describe()
和 describeBy()
。但我也在尝试找到一种方法来对子组中的子组进行基本统计。
例如,我的数据集是关于一个俱乐部的会员资格,该俱乐部有中国和印度会员。其他变量包括性别、年龄、身高、体重、BMI 等。
我想出了 psych::describeBy
来查看由一个变量定义的子组的均值和标准差,例如种族,但我不知道如何进一步缩小范围,以便为中国 男性 成员生成摘要 仅 。
我尝试使用 subset()
函数重新定义,然后再次 运行 describeBy
,例如
chinese <- subset(maindata, chinese=1)
describeBy(chinese, male=1)
但这并没有奏效,结果与describeBy(maindata,chinese=1)
相同,而不是中国男性子集。
我希望这是有道理的。
我能想到的唯一其他解决方案是在 MS Excel 中将我的主要数据集分解为较小的数据集,然后分别重新上传(例如 Chinese.xls、Indian.xls),或者创建一个由种族性别组合定义的新变量,例如Chinesemale=1, Chinesefemale=2, Indianmale=3, Indianfemale=4.
我或多或少需要通过这些子组的子组进行 t 检验和 Fisher 精确分析,所以任何有助于解决这些问题的好的包装建议都将不胜感激!
提前致谢!!
示例数据
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
等于 1 的行。如果您将值 1 分配给名为chinese
. 的参数,则可以使用单个等号
- 在
describeBy()
中,group
参数为您提供该列中每个类别的不同摘要统计信息(如下所示)。您不能将它用于 male=1 的子集。
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()
:
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