我有一个数据集,其中包含出生年份的几个变量(记录为因素)。 我想将因子变量转换为数值,但保持水平。我可以使用以下命令单独执行此操作:
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)]
但是我得到一个错误。
答案 0 :(得分:1)
首先,我认为您不想使用as.numeric
。在任一列上查看该结果,您将看到问题所在。相反,您需要使用as.character
第一。
此外,data
是R函数的名称,因此我将假设数据被称为DATA
。您应该从中得到想要的东西
sapply(DATA, function(x) as.numeric(as.character(x)))