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

时间:2019-09-13 13:39:13

标签: r date lapply numeric

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

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)]

但是我得到一个错误。

1 个答案:

答案 0 :(得分:1)

首先,我认为您不想使用as.numeric。在任一列上查看该结果,您将看到问题所在。相反,您需要使用as.character 第一。

此外,data是R函数的名称,因此我将假设数据被称为DATA。您应该从中得到想要的东西

 sapply(DATA, function(x) as.numeric(as.character(x)))
相关问题