2009-09-11 75 views
0

我們正在開展一項社會資本項目,因此我們的數據集中有一份個人組織成員資格清單。因此,每個人都得到一個數字ID,然後得到他們所在的每個小組的一個子ID。因此,分析單位就是他們所在的小組。我們的一個變量是它的組類型的三點量表。聽起來很簡單嗎?分析轉換單位

我們希望把分析的單位個體水平和冷凝組的類型是到一個變量標誌着他們是在多少不同類型的組。

例如,人一個是八組。在這些組中,三個是(1s),三個是(2s),兩個是(3s)。理想情況下,個人水平變量的樣子是3,因爲她有三種類型的組。

這至少可能嗎?

+0

添加實際樣本數據將爲您提供更好的答案。我可以想到3種看起來很明顯的方法,但答案取決於數據是如何形成的。你的每一行數據都是一個人嗎?如果是這樣,是否有一堆如果字段爲子ID?或者每行都是person + subid的組合。 – 2009-09-11 19:02:44

+1

JD說什麼。但請參閱我的答案,瞭解如何生成虛假數據,並可能對其進行更改以符合您的數據。 – 2009-09-11 19:11:52

+0

你是這麼好的堆棧溢出公民,愛德華多。 – 2009-09-11 21:15:52

回答

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

我想你在問什麼是否有可能計算個人所屬的獨特類型組的數量。

如果是這樣,那肯定是可行的。

我不能告訴你如何在R中做到這一點,因爲我不知道很多R,而且我不知道你的數據是什麼樣的。但沒有理由不可能。

此數據來自數據庫嗎?如果是這樣,那麼編寫SQL查詢來計算所需的值可能會更容易,而不是在R中執行。如果描述模式,應該有很多人可以爲您提供所需的查詢。