0

我有这个数据框。我想把每个唯一的 Dept 放在每个唯一的 Dept 下,并在每个唯一的 Dept 下放置相应的 Name。如您所见,有多个 Dept。例如,final dcoument 应如下所示:

Internet
    Public-Web
    Intranet
BackOffice
    Batch
    BackEnd
BackEnd
   WebLogic
   Oracle

输入(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 中做到这一点?

4

2 回答 2

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)
于 2013-03-28T19:49:26.337 回答
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你需要的任何东西。

于 2013-03-28T20:14:04.853 回答