R:使用正确

时间:2018-05-07 12:41:54

标签: r

我想创建一个简单的代码来连接列,然后计算我的数据框中有多少类别变量。我的问题是当我使用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

1 个答案:

答案 0 :(得分:1)

您创建的x向量比每列大5倍,因此它会回收数据。你想要的是这个。

x <- vector('list',length = NCOL(data))

或者,就像emilliman5所说,只需使用table(unlist(data))