我正在使用具有混合数据类型(数字和字符)的数据框,并且还有一个字符键作为主要标识符。我想缩放和居中数字变量。我尝试过使用scale()函数,但它要求所有字段都是数字。当我只取数字字段并缩放它们时,我必须删除字符标识符以便能够缩放它们。
我理想的最终状态是我有一个带有字符字段和缩放数字字段的数据框。
我意识到这是一个新手问题,所以请保持温和; - )
谢谢!
吉姆
答案 0 :(得分:18)
这样的事情应该做你想做的事情:
library(MASS)
ind <- sapply(anorexia, is.numeric)
anorexia[ind] <- lapply(anorexia[ind], scale)
答案 1 :(得分:4)
这可以使用dplyr::mutate_if
:
library(dplyr)
iris %>%
mutate_if(is.numeric, scale)
答案 2 :(得分:0)
以下代码不需要任何外部库:
# Scale all numeric columns in a data frame.
# df is your data frame
performScaling <- TRUE # Turn it on/off for experimentation.
if (performScaling) {
# Loop over each column.
for (colName in names(df)) {
# Check if the column contains numeric data.
if(class(df[,colName]) == 'integer' | class(df[,colName]) == 'numeric') {
# Scale this column (scale() function applies z-scaling).
df[,colName] <- scale(df[,colName])
}
}
}