gpt4 book ai didi

r - 用 R 中的向量划分数据框或矩阵

转载 作者:行者123 更新时间:2023-12-02 07:04:11 25 4
gpt4 key购买 nike

这看起来应该不会太难,但我很难做到。比方说我有以下数据框:

set.seed(99)
data <- data.frame(Names=rep(c('A','B'),5),
First = rnorm(10),
Second = rnorm(10),
Third = rnorm(10))

我想要的是将整个数据帧除以 A 的平均值。我可以通过以下方式计算:

a.mean <- sapply(data[data$Names == 'A', 2:4], mean)

但是当我尝试像这样将整个数据帧除以该向量时,我没有得到正确的值:

normalized.data <- data[2:4]/a.mean
normalized.data$Names <- data$Names
sapply(data[normalized.data$Names == 'A', 2:4], mean)

First Second Third
0.2578018 -0.5864073 0.1156760

我想要的是 A 的归一化平均值现在等于 1。有没有办法做到这一点?

最佳答案

set.seed(99)
data <- data.frame(Names=rep(c('A','B'),5),
First = rnorm(10),
Second = rnorm(10),
Third = rnorm(10))

a.mean <- sapply(data[data$Names == 'A', 2:4], mean)
data[,2:4] <- sweep(data[,2:4],MARGIN=2,a.mean,"/")

(norm.mean <- sapply(data[data$Names == 'A', 2:4], mean))
## First Second Third
## 1 1 1

根据您的应用程序,将 Names 列改为行名称可能更容易:

data <- data.frame(First = rnorm(10),
Second = rnorm(10),
Third = rnorm(10),
row.names=rep(c('A','B'),5))

我也喜欢 subset(data,Names=='A') 以提高可读性(尽管不推荐用于编程:参见 https://github.com/hadley/devtools/wiki/Evaluation )

关于r - 用 R 中的向量划分数据框或矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15137334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com