Ответ 1
Что-то вроде этого должно делать то, что вы хотите:
library(MASS)
ind <- sapply(anorexia, is.numeric)
anorexia[ind] <- lapply(anorexia[ind], scale)
Я работаю с фреймом данных, который имеет смешанные типы данных (числовые и символьные), а также имеет символьный ключ в качестве основного идентификатора. Я хотел бы масштабировать и центрировать числовые переменные. Я пробовал использовать функцию scale(), но для этого требуется, чтобы все поля были числовыми. Когда я беру только числовые поля и масштабирую их, я должен отказаться от символьного идентификатора, чтобы иметь возможность масштабировать их.
Мое идеальное конечное состояние заключается в том, что у меня есть кадр данных с полями символов и масштабированными числовыми полями.
Я понимаю, что это вопрос новичков, поэтому, пожалуйста, будьте осторожны; -)
Спасибо!
Джим
Что-то вроде этого должно делать то, что вы хотите:
library(MASS)
ind <- sapply(anorexia, is.numeric)
anorexia[ind] <- lapply(anorexia[ind], scale)
Этот код ниже не нуждается в какой-либо внешней библиотеке:
# 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])
}
}
}