【发布时间】:2014-05-12 21:30:24
【问题描述】:
我正在使用具有混合数据类型(数字和字符)并且还有一个字符键作为主要标识符的数据框。我想对数值变量进行缩放和居中。我试过使用 scale() 函数,但它要求所有字段都是数字。当我只取数字字段并对其进行缩放时,我必须删除字符标识符才能对其进行缩放。
我理想的最终状态是我有一个包含字符字段和缩放数字字段的数据框。
我知道这是一个新手问题,所以请保持温和;-)
谢谢!
吉姆
【问题讨论】:
标签: r
我正在使用具有混合数据类型(数字和字符)并且还有一个字符键作为主要标识符的数据框。我想对数值变量进行缩放和居中。我试过使用 scale() 函数,但它要求所有字段都是数字。当我只取数字字段并对其进行缩放时,我必须删除字符标识符才能对其进行缩放。
我理想的最终状态是我有一个包含字符字段和缩放数字字段的数据框。
我知道这是一个新手问题,所以请保持温和;-)
谢谢!
吉姆
【问题讨论】:
标签: r
这样的事情应该做你想做的事:
library(MASS)
ind <- sapply(anorexia, is.numeric)
anorexia[ind] <- lapply(anorexia[ind], scale)
【讨论】:
?scale。
这可以直接使用dplyr::mutate_if:
library(dplyr)
iris %>%
mutate_if(is.numeric, 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])
}
}
}
【讨论】:
library(MASS) 正在提供示例数据集。