String 如何将数据帧中的字符串化数字转换为R中的纯数值

String 如何将数据帧中的字符串化数字转换为R中的纯数值,string,r,numbers,dataframe,String,R,Numbers,Dataframe,我有以下data.frame: employee <- c('John Doe','Peter Gynn','Jolie Hope') # Note that the salary below is in stringified format. # In reality there are more such stringified numerical columns. salary <- as.character(c(21000, 23400, 26800)) df <-

我有以下data.frame:

employee <- c('John Doe','Peter Gynn','Jolie Hope')
# Note that the salary below is in stringified format.
# In reality there are more  such stringified numerical columns.
salary <- as.character(c(21000, 23400, 26800))
df <- data.frame(employee,salary)
我要做的是将字符串中的值转换为纯数字 直接从
df
变量开始。同时保留
employee
的字符串名称。 我尝试过这个,但不起作用:

as.numeric(df)
在一天结束时,我想对这些数字进行算术运算
来自
df
的值。例如
df2好的,这里发生了两件事:

  • R有两种不同的数据类型,看起来像字符串:
    factor
    character
  • 您不能就地修改大多数R对象,必须通过赋值来更改它们
您的示例的实际修复方法是:

df$salary = as.numeric(as.character(df$salary))
如果您尝试在
df$salary
上调用
as.numeric
,而不先将其转换为
字符
,您会得到一个有点奇怪的结果:

> as.numeric(df$salary)
[1] 1 2 3

当R创建一个因子时,它会将向量的唯一元素转换为级别,然后使用整数表示这些级别,这是您在尝试转换为数字时看到的结果。

好的,这里发生了一些事情:

  • R有两种不同的数据类型,看起来像字符串:
    factor
    character
  • 您不能就地修改大多数R对象,必须通过赋值来更改它们
您的示例的实际修复方法是:

df$salary = as.numeric(as.character(df$salary))
如果您尝试在
df$salary
上调用
as.numeric
,而不先将其转换为
字符
,您会得到一个有点奇怪的结果:

> as.numeric(df$salary)
[1] 1 2 3
当R创建一个因子时,它将向量的唯一元素转换为级别,然后使用整数表示这些级别,这是您在尝试转换为数字时看到的