2013-02-20 23 views
0

這可能非常微不足道,但我無法在任何地方找到簡單的解決方案。我正在嘗試在R中創建一個腳本來對一列中的條目進行計數,這些條目屬於指定另一列的3個類別之一。我有兩個服務(a或b)已經看到的身份證號碼的臨牀患者名單(相同身份證的多個條目)。我需要知道服務a,服務b和服務c已經看到了多少ID,但是隻有一次服務重複訪問的次數(基本上每個服務使用至少一次的患者數量) - 希望這可以使感覺,這裏是一個例子來解釋。在R的另一列中指定3個類別的條目一次計數

例子:

 
    ID Category 
    A001 a 
    A002 a 
    A002 a 
    A002 b 
    A003 b 
    A003 b 
    A005 c 
    A001 a 
    A004 b 
    A004 b 
    A006 c 
    A006 a 

輸出應該是這樣的:

 
    a=3 
    b=3 
    c=2 

這是我做了什麼,但是我很堅持,而這可能不是好了!

DataString<- matrix(nrow=dim(refnum)[1], ncol=1) 
for (i in 1:dim(refnum)[1]){ 
    DataString[i,1]<- paste(refnum[i,], collapse = '') 
} 

#generate vector of unique strings 
uniqueID<- unique(DataString) 

#create new matrix to store new IDs 
newID<- matrix(nrow=dim(data)[1], ncol=1) 

#initiate index n 
n<-0 
#loop through unique strings 
for (i in 1:dim(refnum)[1]){ 
    #increment n by 1 for each increment through unique strings 
    n<- n+1 
    #loop through data rows 
    for (j in 1:dim(data)[1]){  
    #find matches with string i 
    index<- which(DataString == uniqueID[i,1]) 
    #assign new ID to matching rows 
    newID[index,1]<- n 
    } 
} 
+0

您的問題序言部分提到「*已被兩種服務(a或b)*看到」,但您的「類別」列中有三種「服務」。這是一個錯字嗎? – A5C1D2H2I1M1N2O1R2T1 2013-02-20 17:25:38

回答

4

在衆多的解決方案:

table(df[!duplicated(df), "Category"]) 

# a b c 
# 3 3 2 
+3

+1我剛*發佈'table(unique(mydf)$ Category)',但不確定是否已經完全正確地閱讀了這個問題。 – A5C1D2H2I1M1N2O1R2T1 2013-02-20 17:06:15

+0

啊,那更好! 「獨特」跳過了我的想法。謹慎地做出答案? – Arun 2013-02-20 17:15:23

+0

完成。我很猶豫,因爲它在概念上與你的答案非常相似。 – A5C1D2H2I1M1N2O1R2T1 2013-02-20 17:19:04

3

如果我的問題的解釋至今是正確的,你也許可以使用以下命令:

table(unique(mydf)$Category) 
# 
# a b c 
# 3 3 2 

我但有點謹慎,因爲你的句子「所以基本上每個服務至少使用過一次的患者數量」,這聽起來像你想要的pa誰已經利用了所有三種服務,在這種情況下,答案是沒有!

因此,aggregate也可能會感興趣,至少看到更容易,你要處理什麼用:

temp <- aggregate(Category ~ ID, mydf, function(x) sort(unique(x))) 
temp 
#  ID Category 
# 1 A001  a 
# 2 A002  a, b 
# 3 A003  b 
# 4 A004  b 
# 5 A005  c 
# 6 A006  a, c 

這裏的一個可能的好處是,早期的列表(如果你需要什麼)也可以通過使用table(unlist(temp$Category))aggregate的輸出中獲得,因此您可以通過ID和任何所需摘要查看服務的使用情況。

相關問題