我正在尝试使用函数来更改列类型。
样品
df = data.table(commission = as.character(c("100 EUR", "200 EUR", "300 EUR")))
df$commission <- as.character(df$commission)
str(df)
#Classes ‘data.table’ and 'data.frame': 3 obs. of 1 variable:
#$ commission: chr "100 EUR" "200 EUR" "300 EUR"
#- attr(*, ".internal.selfref")=<externalptr>
功能
colconv <- function(data,colname){
data$colname <- gsub(data$colname, pattern = " EUR", replacement = "", fixed = T)
data$colname <- as.numeric(data$colname)
data
}
我得到......
colconv(df, commission)
#Classes ‘data.table’ and 'data.frame': 3 obs. of 1 variable:
#$ commission: chr "100 EUR" "200 EUR" "300 EUR"
#- attr(*, ".internal.selfref")=<externalptr>
它通过R处理,但它什么都没改变。
有人可以建议如何让它发挥作用吗?或任何其他更智能的解决方案?
答案 0 :(得分:2)
你可能最好只编写你的函数来对一个向量进行操作,然后调用它来分配你的新变量
colconv <- function(x){ as.numeric(gsub(x, pattern = " EUR", replacement = "", fixed = T)) }
......例如。然后:
df[, commission := colconv(commission)]