2013-02-20 44 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和任何所需摘要查看服务的使用情况。

相关问题