根据 colnames 中的子字符串更改 coltypes
Change the coltypes based on a substring in colnames
我有一个非常大的销售数据数据框 (df8)。载入的时候,一些我想是数字的变量载入为chr。我想将 colname 包含单词 "Order" 的每一列从 chr 更改为数字。我该怎么做?
我会使用函数 grepl
查找出现的 "order" 并遍历每一列并转换为数字。请注意,变量实际上是字符,如果您的数据是一个因素,它将不起作用(需要 (as.numeric(as.character(x))
).
# create data.frame with characters
xy <- data.frame(a = runif(5), b.order = runif(5), cOrder = runif(5))
xy[, c(2, 3)] <- sapply(xy[, c(2, 3)], FUN = as.character)
str(xy)
'data.frame': 5 obs. of 3 variables:
$ a : num 0.914 0.468 0.106 0.624 0.841
$ b.order: chr "0.363523897947744" "0.56488766730763" "0.42081760126166" "0.560672372812405" ...
$ cOrder : chr "0.949268750846386" "0.596737345447764" "0.368769273394719" "0.717566329054534" ...
with.order <- grepl("order", names(xy), ignore.case = TRUE)
xy[, with.order] <- sapply(xy[, with.order], FUN = as.numeric)
str(xy)
'data.frame': 5 obs. of 3 variables:
$ a : num 0.914 0.468 0.106 0.624 0.841
$ b.order: num 0.364 0.565 0.421 0.561 0.768
$ cOrder : num 0.949 0.597 0.369 0.718 0.417
我有一个非常大的销售数据数据框 (df8)。载入的时候,一些我想是数字的变量载入为chr。我想将 colname 包含单词 "Order" 的每一列从 chr 更改为数字。我该怎么做?
我会使用函数 grepl
查找出现的 "order" 并遍历每一列并转换为数字。请注意,变量实际上是字符,如果您的数据是一个因素,它将不起作用(需要 (as.numeric(as.character(x))
).
# create data.frame with characters
xy <- data.frame(a = runif(5), b.order = runif(5), cOrder = runif(5))
xy[, c(2, 3)] <- sapply(xy[, c(2, 3)], FUN = as.character)
str(xy)
'data.frame': 5 obs. of 3 variables:
$ a : num 0.914 0.468 0.106 0.624 0.841
$ b.order: chr "0.363523897947744" "0.56488766730763" "0.42081760126166" "0.560672372812405" ...
$ cOrder : chr "0.949268750846386" "0.596737345447764" "0.368769273394719" "0.717566329054534" ...
with.order <- grepl("order", names(xy), ignore.case = TRUE)
xy[, with.order] <- sapply(xy[, with.order], FUN = as.numeric)
str(xy)
'data.frame': 5 obs. of 3 variables:
$ a : num 0.914 0.468 0.106 0.624 0.841
$ b.order: num 0.364 0.565 0.421 0.561 0.768
$ cOrder : num 0.949 0.597 0.369 0.718 0.417