将水平显示为数字的几个因子转换为数值向量

convert several factors where the levels appear as numbers to a numeric vector

我有一个数据集,其中有几个出生年份的变量(记录为因子)。 我想将因子变量转换为数字,但保持水平。我可以使用以下命令单独执行此操作:

data$yrbrn1 <- as.numeric(levels(data$yrbrn1))[data$yrbrn1]

但是,我想对多个变量做同样的事情。

我的数据头部是(前八个变量):

   yrbrn1  yrbrn2  yrbrn3  yrbrn4  yrbrn5  yrbrn6  yrbrn7  yrbrn8
1   2012    1949    1955     NA      NA      NA      NA       NA
2   2012    1983    1951    1956    1989    1995    2003     2005
3   2012    1946    1946    1978     NA      NA      NA       NA 
4   2012     NA      NA      NA      NA      NA      NA       NA
5   2012    1953    1959    1980    1985    1991    2008     2011
6   2012    1938     NA      NA      NA      NA      NA       NA

我试过:

data[,2:ncol(data)] <- lapply(data[,2:ncol(data)], as.numeric(levels([,2:ncol(data)]))[,2:ncol(data)]

但是我得到一个错误。

首先,我认为您不想使用 as.numeric。在任何一列上查看该结果,您就会发现哪里出了问题。相反,您需要使用 as.character 第一的。

此外,data 是 R 函数的名称,因此我假设数据被称为 DATA。你应该从

得到你想要的
 sapply(DATA, function(x) as.numeric(as.character(x)))