質問
ソーシャルキャピタルプロジェクトに取り組んでいるので、データセットには個人の組織メンバーシップのリストが含まれます。したがって、各個人は、数値IDを取得し、次に各グループのサブIDを取得します。したがって、分析の単位は、彼らが属するグループです。変数の1つは、グループのタイプの3ポイントスケールです。簡単に聞こえますか?
分析単位を個々のレベルに持ち込み、それが属するグループのタイプを、それらが属するグループのタイプの数を示す変数に凝縮します。
たとえば、人1は8つのグループに属します。これらのグループのうち、3つは(1s)、3つは(2s)、2つは(3s)です。個々のレベル変数は、理想的には3になります。なぜなら、彼女は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
他のヒント
あなたが求めているのは、個人が属するグループのユニークなタイプの数を数えることができるかどうかだと思います。
もしそうなら、それは確かに可能です。
多くのRを知らないので、Rでそれを行う方法を説明することはできません。また、データがどのように見えるかわかりません。しかし、それが不可能になる理由はありません。
このデータはデータベースからのものですか?その場合、Rで行うよりも、必要な値を計算するSQLクエリを作成する方が簡単な場合があります。スキーマを説明する場合、必要なクエリを提供できる人がたくさんいるはずです。
所属していません StackOverflow