【问题标题】:For Each Loop to convert into numeric values [duplicate]对于每个循环转换为数值[重复]
【发布时间】: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)
  • 不,我现在很尴尬。我没想到会这么简单。非常感谢:)

标签: r dataframe foreach


【解决方案1】:

如果已经是因子变量,则直接转换为整数,即

employ.data$location <- as.integer(employ.data$location)
employ.data
#    employee salary  startdate location
#1   John Doe  21000 2010-11-01        2
#2 Peter Gynn  23400 2008-03-25        1
#3 Jolie Hope  26800 2007-03-14        2

否则先转换成因子再转换成整数,即

employ.data$location <- as.integer(as.factor(employ.data$location))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 2015-04-19
    • 2017-12-22
    • 2021-08-10
    • 1970-01-01
    • 2021-12-09
    • 2013-11-22
    相关资源
    最近更新 更多