我有一个包含大量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"
标签是否需要与评论区别对待?
答案 0 :(得分:0)
标签是属性。
我发现这个问题可能对保留属性有用。 How to delete a row from a data.frame without losing the attributes