【问题标题】:Calculate proportion by groups for a subset of the dataset按组计算数据集子集的比例
【发布时间】:2014-11-12 11:25:29
【问题描述】:

这可能很简单,但由于我没有进入它,我在这里发帖希望能得到一些帮助。

我想为分类变量的数据集按组计算比例的比例和标准误差。所以我有 2 个变量 v1 是从 1 到 4,v2 是从 1 到 9。我想按组计算 1 的比例(也适用于 2,3...9(在 v2 中)) v1.

由于使用table(v1, v2),手工操作很容易,但我不想手工操作:)

用更简单的方式说:我想找到 % 但我们可以使用均值,因为它是数字变量。我们有 1000 人,v1 的第 1 类有 300 人,v1 的第 2 类有 200 人等。v2 也是如此,第 1 类有 400 人等等。如果我按 v2 组计算类别 1 (v1) 的百分比,那么将是 300/400、200/400 等等。

数据框示例

id   v1   v2
1    1    1
2    1    1
3    2    1
4    2    1
5    3    2
6    3    2
7    4    2

期望的输出:分组v2: group 1 (v2=1) 2/4; 2/4; 2/4; 1/4. v2: group 2 (v2=2) 2/3; 2/3; 2/3; 1/3

希望它有意义!

【问题讨论】:

  • 我想找到 % 但我们可以使用均值,因为它是数字变量。我们有 1000 人,300 人属于 v1 的第 1 类,200 人属于 v2 的第 2 类,等等。v2 也是如此,第 1 类有 400 人,依此类推。如果我按 v2 组计算类别 1(v1) 的百分比,那么将是 300/400、200/400 等等。
  • @KFB 添加了一个数据框样本
  • 为什么 v2==1 有 4 个值(2/4;2/4;2/4;1/4),而 v1 中只有 1 和 2(各两个)?
  • 不明白。如何获得 2/4、1/4 ? 2/3, 1/3 ?
  • 2/4 因为在 v1 中有两个人 1 ......其他人的逻辑相同。例如,按年龄组有多少人吸烟。所以 v1 吸烟组和 v2 是年龄组。如果 v1=1 表示他们每天抽 10 支香烟,如果是 2,则表示每天抽 20 支香烟等等......

标签: r


【解决方案1】:

试试:

library(data.table)
setDT(dt)[v1==1,list(meanv2=mean(v2), sev2=se(v2)),by=v3]

如果 v1==1 ,mean(v1) 将等于 1。

【讨论】:

  • 谢谢。这可能是正确的代码,但在我的情况下不起作用。可能我解释得不好,所以我更新所有帖子。谢谢
【解决方案2】:

这是我上面问题的答案,但同时我问了另一个问题。 我找到了执行此操作的代码,但是我还需要计算标准误差

tapply(dt$v1, dt$v2, function(x){prop.table(table(x))})

标准错误是使用此公式SE = sqrt(p*(1-p)/n) 其中p=proportionn=total population

我的问题是:如何在上面的代码中包含 SE?

提前谢谢你!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 2018-12-17
    • 2021-06-20
    相关资源
    最近更新 更多