2013-03-28 109 views
0

我有這個數據幀。我希望把每一個獨特的部門,並把相應的名稱下,每一個獨特的系正如你可以看到有多個系例如,最終dcoument應該是這樣的:處理R數據幀

Internet 
    Public-Web 
    Intranet 
BackOffice 
    Batch 
    BackEnd 
BackEnd 
    WebLogic 
    Oracle 

dput(x)的

structure(list(ID = c(1234L, 2345L, 6789L, 3456L, 7890L, 1987L 
), Name = structure(c(5L, 3L, 2L, 1L, 6L, 4L), .Label = c("BackEnd", 
"Batch", "Intranet", "Oracle", "Public-Web", "WebLogic"), class = "factor"), 
    Dept = structure(c(3L, 3L, 2L, 2L, 1L, 1L), .Label = c("BackEnd", 
    "BackOffice", "Internet"), class = "factor")), .Names = c("ID", 
"Name", "Dept"), class = "data.frame", row.names = c(NA, -6L)) 

任何想法,我會如何做到這一點在R?

回答

1

我假設你可能有重複的,因此使用unique

for(dept in unique(x$Dept)){ 
    print(dept) 
    x2 <- subset(x,subset=Dept==dept) 
    for(name in unique(x2$Name)){ 
    print(paste(sep=""," ",name)) 
    } 
} 

用你需要的替換print

1

您可以使用split來實現這一目標:

split(as.character(df$Name), df$Dept) 

# $BackEnd 
# [1] "WebLogic" "Oracle" 
# 
# $BackOffice 
# [1] "Batch" "BackEnd" 
# 
# $Internet 
# [1] "Public-Web" "Intranet" 

如果你想要獨一無二的條目,那麼就這樣做:

df <- unique(df[, 2:3]) 
split(as.character(df$Name), df$Dept) 
+0

我需要使用兩個for循環。對於每個獨特的部門,我需要列出名稱。我將在第二個循環的Name下進行更多的處理。 – user1471980

+1

我不明白你的評論。阿倫答案比兩個循環要快得多。 –

+0

我想他只是不知道如何迭代'拆分' –