在聚合数据帧后,如何将rownames列表作为值?

前端之家收集整理的这篇文章主要介绍了在聚合数据帧后,如何将rownames列表作为值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个像这样的数据帧:
  1. type V1 V2
  2. 1 A bla bla
  3. 2 A bla bla
  4. 3 B bloo bla
  5. 4 B bloo bla
  6. 5 C moo bloo
  7. 6 C moo bloo

目前我融化/施法得到这个:

  1. type bla bloo moo
  2. A 4 0 0
  3. B 2 2 0
  4. C 0 2 2

使用这些命令:

  1. library(reshape)
  2. melted <- melt(df,id='type')
  3. count <- function(x) {
  4. length(na.omit(x))
  5. }
  6. casted <- cast(melted,type~value,count)

然而,我想获得原始rownames的列表而不是计数/求和.像这样的东西:

  1. type bla bloo moo
  2. A 1,2 0 0
  3. B 3,4 3,4 0
  4. C 0 5,6 5,6

其中bla,bloo和moo的每个值都是原始数据框中唯一的rownames列表.

有人可以帮忙吗?

  1. library(reshape2)
  2. df <- read.table(text="type V1 V2
  3. 1 A bla bla
  4. 2 A bla bla
  5. 3 B bloo bla
  6. 4 B bloo bla
  7. 5 C moo bloo
  8. 6 C moo bloo")
  9.  
  10. df$id <- rownames(df)
  11.  
  12. melted <- melt(df,id=c('type','id'),measure.vars=c("V1","V2"))
  13.  
  14. fun <- function(x) paste(unique(x),collapse=",")
  15.  
  16. dcast(melted,fun,value.var="id",fill="0")
  17.  
  18. # type bla bloo moo
  19. #1 A 1,2 0 0
  20. #2 B 3,4 3,4 0
  21. #3 C 0 5,6 5,6

猜你在找的设计模式相关文章