因子列标签

时间:2015-06-09 15:43:08

标签: r factors

我有一个包含大量factor列的数据框,这些列的标签说明了这些列名称的含义(这些是来自阅读SAS xport文件,对理解列非常有用) 。当我将这些factor列转换为character列时,列标签已消失,我们如何保留它们?数据表中也存在同样的问题。

以下是显示行为的示例:

 d1<-data.frame(a=c(1,1,1,2,2),b=c("x1","x1","x2","x2","x3"))
 d1$a<-factor(d1$a)
 label(d1[["a"]])<-"Identity variable"
 label(d1[["b"]])<-"Single letter variable"
 label(d1)
                 a                        b 
 "Identity variable" "Single letter variable"

 i<-sapply(d1,is.factor)
 d1[i]<-lapply(d1[i],as.character,stringsAsFactors=F)
 label(d1)
                 a                        b 
             ""      "Single letter variable" 

如何在转换数据框和数据表中的列时保留标签?

我根据Michal的建议尝试了以下内容:

 `[.avector` <- function(x,i,...) {
      r <- NextMethod("[")
      mostattributes(r) <- attributes(x)
     r
   }


 d2 <- data.frame( lapply( d1, function(x) {
      structure( x, class = c("avector", class(x) ) )
    } ) )

   i<-sapply(d2,is.factor)
   d2[i]<-lapply(d2[i],as.character)
   label(d2)

                   a                        b 
                  "" "Single letter variable" 

标签是否需要与评论区别对待?

1 个答案:

答案 0 :(得分:0)

标签是属性。

我发现这个问题可能对保留属性有用。 How to delete a row from a data.frame without losing the attributes