跨多个列的交叉表,列中有分类值

2024-09-29 23:14:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据集,上面有属于一个类别的多个条件的信息(例如:多动症类型的个人将被视为多动症)。我需要确定有多少个人在类别中至少有一个条件,这样我就可以拥有全局计数,而不必计算一个人两次。你知道吗

我的数据是这样的:

IID SEX ADHDh ADHDi ADHDc... Ind1 M Present Absent Absent

因此,我需要执行交叉表,因为否则我将夸大实际计数。问题是,我的行值是分类变量:“Present”、“abside”和“Unable to code”。但是,我只感兴趣的是计算多个列中具有属于单个类别的条件的值为“Present”的个体数。我一直在用几种方法来处理这个问题,但我总是遇到同样的问题:我得到一个混乱的表,它试图为每一列计算所有不同的分类值。我需要得到一个列联表,其中只统计在该类别中,至少有一个条件(“目前”为多动症,多动症,多动症,多动症或多动症)按性别分组的人数。最终的目标是做一个卡方检验来比较男性和女性。你知道吗

这就是我要找的: `你知道吗

 SEX      ADHD              
   F        57
   M       113

这是我在熊猫身上使用的不按性别分组的代码:

ct_adhd=pd.crosstab([df_trans.ADHD_NOS=="Present", df_trans.ADHDi=="Present", df_trans.ADHDh=="Present"], df_trans.ADHDc=="Present", margins=True) ct_adhd

这是我拿到的乱七八糟的桌子:

ADHD_NOS False True All ADHDc ADHDi ADHDh
False False False 10 5 25 True 5 0 2 True False 5 0 3 True False False 20 0 30 True False 1 0 1 All 41 5 107

我还尝试使用此代码仅对任何列中具有value=“Present”的个体求和,但是此代码会自动假定no data=0,因此它不会给出实际具有数据的个体数量的信息:

df_trans['Count_ADHD'] = (df_trans[["ADHDc","ADHDh","ADHDi"]] == 'Present').sum(axis=1)

另外,我更喜欢和大熊猫一起工作,但是如果这在R做得更好,我会试试。我会感激任何帮助!你知道吗


Tags: 数据代码falsetruedftrans条件类别

热门问题