【问题标题】:Unit of Analysis Conversion分析转换单位
【发布时间】:2010-11-27 14:27:00
【问题描述】:

我们正在开展一项社会资本项目,因此我们的数据集包含个人的组织成员列表。因此,每个人都会获得一个数字 ID,然后是他们所在的每个组的子 ID。因此,分析单位是他们所在的组。我们的变量之一是针对其所在组类型的三点量表。听起来很简单?

我们希望将分析单元带到个人层面,并将其所属的群体类型浓缩为一个变量,表示他们所处的不同类型群体的数量。

例如,第一个人分为八组。在这些组中,三个是(1s),三个是(2s),两个是(3s)。理想情况下,个人水平变量应该是 3,因为她属于所有三种类型的组。

这至少可能吗?

【问题讨论】:

  • 添加实际样本数据将为您提供更好的答案。我可以想到 3 种看似显而易见的方法,但答案取决于数据的形成方式。你的每一行数据都是一个人吗?如果是这样,是否有一堆用于 subID 的 if 字段?还是每一行都是 person + subid 的组合。
  • 京东说的。但是请参阅我的答案以了解如何生成虚假数据,并且可能会对其进行更改以适合您拥有的数据。
  • 爱德华多,你是一个很好的堆栈溢出公民。

标签: r


【解决方案1】:
##simulate data
##individuals
n <- 10
## groups
g <- 5
## group types
gt <- 3
## individuals*group membership
N <- 20
## inidividuals data frame
di <- data.frame(individual=sample(1:n,N,replace=TRUE),
                 group=sample(1:g,N, replace=TRUE))
## groups data frame
dg <- data.frame(group=1:g, type=sample(1:gt,g,replace=TRUE))
## merge
dm <- merge(di,dg)
## order - not necessary, but nice
dm <- dm[order(dm$individual),]
## group type per individual
library(plyr)
dr <- ddply(dm, "individual", function(x) length(unique(x$type)))

> head(dm)
   group individual type
2      2          1    2
8      2          1    2
20     5          1    1
9      3          3    2
12     3          3    2
17     4          3    2

> head(dr)
  individual V1
1          1  2
2          3  1
3          4  2
4          5  1
5          6  1
6          7  1

【讨论】:

    【解决方案2】:

    我认为您要问的是是否可以计算个人所属的唯一类型组的数量。

    如果是这样,那当然是可能的。

    我无法告诉您如何在 R 中执行此操作,因为我不太了解 R,而且我不知道您的数据是什么样的。但没有理由不这样做。

    这些数据是否来自数据库?如果是这样,那么编写 SQL 查询来计算您想要的值可能比在 R 中更容易。如果您描述您的模式,这里应该有很多人可以为您提供所需的查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      • 2023-03-10
      • 1970-01-01
      • 2021-12-20
      • 2013-09-04
      • 2018-01-07
      • 2015-04-06
      相关资源
      最近更新 更多