【发布时间】:2018-12-13 13:19:41
【问题描述】:
我有一个关于数据框操作的问题。如果我以这个数据框为例:
employee <- c('John Doe','Peter Gynn','Jolie Hope')
salary <- c(21000, 23400, 26800)
startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
location <- c('New York', 'Alabama','New York')
employ.data <- data.frame(employee, salary, startdate, location)
employ.data
employee salary startdate location
1 John Doe 21000 2010-11-01 New York
2 Peter Gynn 23400 2008-03-25 Alabama
3 Jolie Hope 26800 2007-03-14 New York
现在我想将位置转换为数值。我知道我可以这样做:
transformlocation <- function(x) {
x <- as.character(x)
if (x =='New York'){
return('1')
}else if (x=='Alabama'){
return('2')
}else if (x=='Florida'){
return('3')
}else
return('0')
}
employ.data$location <- sapply(employ.data$location, transformlocation)
employ.data
employee salary startdate location
1 John Doe 21000 2010-11-01 1
2 Peter Gynn 23400 2008-03-25 2
3 Jolie Hope 26800 2007-03-14 1
但在我的最终数据集中,有数百个不同的值。例如,是否可以在这里使用 for each 语句?
感谢您的帮助!
【问题讨论】:
-
既然你的
location已经是因素,那么就做as.numeric(employ.data$location) -
不,我现在很尴尬。我没想到会这么简单。非常感谢:)