R-仅在混合类型的数据帧中缩放数值
我使用的数据帧具有混合数据类型(数字和字符),并且还具有字符键作为主要标识符。我想缩放数值变量并使其居中。我尝试过使用scale()函数,但它要求所有字段都是数字。当我只取数字字段并缩放它们时,我必须删除字符标识符才能缩放它们 我的理想结束状态是,我有一个带有字符字段和缩放数字字段的数据帧 我意识到这是一个新手问题,所以请温柔一点;-) 谢谢R-仅在混合类型的数据帧中缩放数值,r,R,我使用的数据帧具有混合数据类型(数字和字符),并且还具有字符键作为主要标识符。我想缩放数值变量并使其居中。我尝试过使用scale()函数,但它要求所有字段都是数字。当我只取数字字段并缩放它们时,我必须删除字符标识符才能缩放它们 我的理想结束状态是,我有一个带有字符字段和缩放数字字段的数据帧 我意识到这是一个新手问题,所以请温柔一点;-) 谢谢 Jim像这样的东西应该可以满足您的需求: library(MASS) ind <- sapply(anorexia, is.numeric) ano
Jim像这样的东西应该可以满足您的需求:
library(MASS)
ind <- sapply(anorexia, is.numeric)
anorexia[ind] <- lapply(anorexia[ind], scale)
库(MASS)
ind以下代码不需要任何外部库:
# 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])
}
}
}
#缩放数据框中的所有数字列。
#df是您的数据帧
执行标记如果
,可以使用dplyr::mutate\u直接执行此操作:
library(dplyr)
iris %>%
mutate_if(is.numeric, scale)
非常感谢。这个比例和中心(标准化)会吗?@Jim是的,它就是这样做的。看看?scale
。另一个也不是,库(MASS)
提供了示例数据集。