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