我想创建一个简单的代码来连接列,然后计算我的数据框中有多少类别变量。我的问题是当我使用apply
时,我得到的结果却是五次。
实施例
a <- c('car','bike',NA,'moto','skate')
b <- c(NA,'car',NA,NA,'bike')
c <- c('car',NA,NA,'skate',NA)
d <- c('moto','skate',NA,'car',NA)
data <- data.frame(a,b,c,d)
然后,使用apply
:
x <- vector('list',length = NCOL(data)*NROW(data))
one_column <- apply(data,1,function(y){
x <- rbind(y,x)
return(x)
})
然后unlist
并使用table
来计算我的数据中有多少个分类变量:
one_column <- unlist(one_column)
table(one_column)
但是为了得到正确的结果我需要除以5:
table(one_column)/5
答案 0 :(得分:1)
您创建的x
向量比每列大5倍,因此它会回收数据。你想要的是这个。
x <- vector('list',length = NCOL(data))
或者,就像emilliman5所说,只需使用table(unlist(data))
。