我们正在开展一项社会资本项目,因此我们的数据集中列出了个人的组织成员资格。因此,每个人都获得一个数字ID,然后获得他们所在的每个组的子ID。因此,分析单位是他们所在的组。我们的一个变量是它所属的组的三点量表。听起来很简单?
我们希望将分析单位带到个人层面,并将其所在的群组类型压缩为一个变量,表示他们所处的群组有多少种类型。
例如,第一人是八组。在这些组中,三个是(1s),三个是(2s),两个是(3s)。理想情况下,单个级别变量的外观是3,因为她属于所有三种类型的组。
这至少可以吗?
答案 0 :(得分:3)
##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
答案 1 :(得分:1)
我认为您所询问的是,是否可以计算个人所属的唯一类型的群组数量。
如果是这样,那肯定是可能的。
我无法告诉你如何在R中这样做,因为我不知道很多R,我不知道你的数据是什么样的。但是没有理由不这样做。
这些数据来自数据库吗?如果是这样,那么编写SQL查询来计算所需的值可能更容易,而不是在R中执行。如果您描述了模式,那么应该有很多人可以为您提供所需的查询。