gpt4 book ai didi

r - 如何使用 R 中的 2 个组变量计算特定范围的统计信息?

转载 作者:行者123 更新时间:2023-12-04 12:35:08 24 4
gpt4 key购买 nike

我有点问题。

我有一列数据 (P),我想对其进行分析(平均值、标准差等)并针对另一列(频率)进行绘图。数据集示例如下所示。

Frequency Voltage P
20000 10 0.12
20000 10 0.23
20000 10 0.51
20000 20 0.45
20000 20 0.01
20000 20 0.94
30000 10 0.66
30000 10 0.36
30000 10 0.18
30000 20 0.05
30000 20 0.15
30000 20 0.83

我遇到的麻烦是计算对应于频率 = 20000 和电压 = 10 的 P 范围的平均值。

大多数示例只使用一个组,如下所示:

by(df$P, df$Frequency, mean)

有没有办法计算出来,让dataframe变成:

Frequency Voltage P(average)
20000 10 ...
20000 20 ...
30000 10 ...
30000 20 ...

编辑:

我设法找到了我需要的平均值和标准差:

df$mean<-ave(df$P, df$Voltage, df$Frequency, FUN=mean)
df$sd<-ave(df$P, df$Voltage, df$Frequency, FUN=sd)

但他们给了我重复的值(value)观。现在,有没有办法压缩所有这些,所以我只得到上面的数据框?

最佳答案

尝试使用 listformula 表示法的 aggregate:

# your data
df <- read.table(text="Frequency Voltage P
20000 10 0.12
20000 10 0.23
20000 10 0.51
20000 20 0.45
20000 20 0.01
20000 20 0.94
30000 10 0.66
30000 10 0.36
30000 10 0.18
30000 20 0.05
30000 20 0.15
30000 20 0.83", header=TRUE)

# list notation
with(df, aggregate(P, list(Frequency=Frequency, Voltage=Voltage), FUN=mean))
# Frequency Voltage x
#1 20000 10 0.2866667
#2 30000 10 0.4000000
#3 20000 20 0.4666667
#4 30000 20 0.3433333

# formula notation
aggregate(P ~ Frequency + Voltage, data=df, FUN=mean)
# Frequency Voltage P
#1 20000 10 0.2866667
#2 30000 10 0.4000000
#3 20000 20 0.4666667
#4 30000 20 0.3433333

要将多个统计信息放在一起(例如,meansd),您可以将结果 cbind 在一起:

> cbind(aggregate(P ~ Frequency + Voltage, data=df, FUN=mean),
sd = aggregate(P ~ Frequency + Voltage, data=df, FUN=sd)$P)
Frequency Voltage P sd
1 20000 10 0.2866667 0.2010804
2 30000 10 0.4000000 0.2424871
3 20000 20 0.4666667 0.4652240
4 30000 20 0.3433333 0.4244212

或者,您可以编写自己的函数来返回值向量,但是您必须做一些额外的工作来将结果存储在自己的列中:

> myfun <- function(x) c(mean(x), sd(x))
> x <- aggregate(P ~ Frequency + Voltage, data=df, FUN=myfun)
> x[,3:4] <- x[,3]
Frequency Voltage P V4
1 20000 10 0.2866667 0.2010804
2 30000 10 0.4000000 0.2424871
3 20000 20 0.4666667 0.4652240
4 30000 20 0.3433333 0.4244212

关于r - 如何使用 R 中的 2 个组变量计算特定范围的统计信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24386500/

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