如何在R语言中将数据框列归一化至标准差为1
让数据框某一列标准差为1的归一化方法
嗨,这事儿其实很简单!要让你的occurences列标准差等于1,只需要把该列的每个值除以它原本的标准差就行——原理很直白:新数据的标准差 = 原标准差 / 原标准差 = 1。不过要注意处理标准差为0的特殊情况(比如列里所有值都一样),避免除以0的错误。
给你结合你的示例数据框写完整的代码:
# 你的原始数据框 df <- data.frame(name = c("1", "2", "3"), date_article = c("feb. 2021", "jan.2021", "dec. 2020"), occurences = c(3, 0, 1)) # 计算目标列的标准差 col_sd <- sd(df$occurences) # 生成标准差为1的归一化列,处理标准差为0的特殊情况 df$occurences_norm <- ifelse(col_sd == 0, df$occurences, df$occurences / col_sd) # 验证结果 sd(df$occurences_norm)
运行这段代码后,你会得到一个新列occurences_norm,它的标准差就是1。你可以用sd(df$occurences_norm)来验证,结果会非常接近1(因为浮点运算的微小误差,可能显示为1.0000000000000002之类的,但本质就是1)。
如果你的列里所有值都相同(标准差为0),代码里的ifelse会让归一化后的列保持原数据,避免报错——你也可以根据自己的需求调整这种情况的处理逻辑,比如替换为0或者其他值。
内容的提问来源于stack exchange,提问作者Alan CUZON
相关产品推荐
相关产品推荐

