【发布时间】:2020-01-29 11:58:04
【问题描述】:
在加载数据时,R 将字符串转换为因子,除非另有说明。然后,我们必须根据基础数据将因子转换为字符或数字。在数值的情况下,我们首先使用 as.character() 转换为字符串,然后在整数值的情况下将结果转换为 as.integer()。
但是在使用 gsub 从数字中清理字符时,R 会自动将清理后的字符串转换为字符。
例如:
> sal <- data.frame(name = c('abc','def','ghi','pqr'),
+ Salary = c('$65,000','$102,000','$85,000','$72,000'))
> str(sal)
'data.frame': 4 obs. of 2 variables:
$ name : Factor w/ 4 levels "abc","def","ghi",..: 1 2 3 4
$ Salary: Factor w/ 4 levels "$102,000","$65,000",..: 2 1 4 3
> sal$Salary <- gsub('\\$','',sal$Salary)
> sal$Salary <- gsub(',','',sal$Salary)
> str(sal)
'data.frame': 4 obs. of 2 variables:
$ name : Factor w/ 4 levels "abc","def","ghi",..: 1 2 3 4
$ Salary: chr "65000" "102000" "85000" "72000"
>
我们可以看到在 gsub 之后“Salary”列从 Factor 变为 Character。有人可以让我知道 gsub 是否也在这里执行 as.character() 操作?如果是这样,它不会将列转换为整数,因为所有值都是整数吗?
【问题讨论】: