首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用R中的apply函数对数据帧进行规范化?

如何使用R中的apply函数对数据帧进行规范化?
EN

Stack Overflow用户
提问于 2021-09-27 00:16:35
回答 4查看 107关注 0票数 0

我有一个数据框,我想对每一行进行rowise归一化。例如:

row1_new = (row1_old - mean_of_row1)/standard_dev_of_row1。

为此,我编写了以下代码:

代码语言:javascript
运行
AI代码解释
复制
normalize_df <- function(x){
    mean1<- mean(unlist(as.list(x)))
    std1<- sd(unlist(as.list(x)))
    y = (x -  mean1)/std1
    return(y)
}

n_rows <- length(row.names(query_data))
for(i in seq(1, n_rows)){
    query_data[i,]<- query_data[i,]
}

但是它似乎慢了很多,而且我没有成功地使用apply函数。如何使用apply函数逐行规范化数据帧?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-09-27 03:30:35

另一种方法是使用内置的函数scale t(scale(t(df)))

票数 3
EN

Stack Overflow用户

发布于 2021-09-27 00:44:38

这里是使用rowMeansrowSds函数的另一个选项。

代码语言:javascript
运行
AI代码解释
复制
library(matrixStats)
df <- mtcars
(df - rowMeans(df))/rowSds(as.matrix(df))

#                         mpg    cyl disp    hp   drat     wt     qsec     vs     am   gear   carb
#Mazda RX4           -0.16637 -0.447 2.43 1.496 -0.486 -0.510 -0.25117 -0.559 -0.540 -0.484 -0.484
#Mazda RX4 Wag       -0.16784 -0.448 2.43 1.495 -0.487 -0.507 -0.24221 -0.560 -0.542 -0.486 -0.486
#Datsun 710          -0.02053 -0.504 2.17 1.785 -0.508 -0.547 -0.12833 -0.581 -0.581 -0.504 -0.581
#Hornet 4 Drive      -0.21836 -0.412 2.76 0.897 -0.449 -0.447 -0.24304 -0.475 -0.488 -0.450 -0.475
#Hornet Sportabout   -0.30751 -0.402 2.69 1.067 -0.444 -0.442 -0.32228 -0.472 -0.472 -0.446 -0.454
#Valiant             -0.24228 -0.415 2.72 1.000 -0.462 -0.452 -0.21197 -0.487 -0.501 -0.458 -0.487
#...
#...
票数 2
EN

Stack Overflow用户

发布于 2021-09-27 00:23:49

使用匿名函数很简单:

代码语言:javascript
运行
AI代码解释
复制
t(apply(mtcars, 1, function(x) (x-mean(x))/sd(x)))
代码语言:javascript
运行
AI代码解释
复制
      Mazda RX4 Mazda RX4 Wag  Datsun 710 Hornet 4 Drive Hornet Sportabout    Valiant Duster 360    Merc 240D    Merc 230   Merc 280  Merc 280C
mpg  -0.1663702    -0.1678380 -0.02053465     -0.2183565        -0.3075069 -0.2422777 -0.3696702 -0.005278277 -0.09496285 -0.2208754 -0.2439523
cyl  -0.4465404    -0.4481484 -0.50419828     -0.4122884        -0.4016114 -0.4152404 -0.4209455 -0.464365595 -0.49763495 -0.4511720 -0.4497564
disp  2.4298741     2.4297052  2.17138772      2.7611422         2.6941650  2.7152412  2.4439581  2.746995205  2.43244710  2.3682166  2.3687127
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69343280

复制
相关文章

相似问题

领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档