我想计算R中的标准差。但标准函数“sd(x)”不是我需要的函数。我正在寻找一个函数来计算sd(x,依赖于我的数据帧中的另一个变量)。这样我就可以通过依赖变量(image)添加一个带有sd的新列。 像这样:
$("span").mouseenter(function(event){
event.stopPropagation();
});
答案 0 :(得分:1)
功能ave
非常适用于此。
dat <- read.table(text = "
image answer sd
a 1 0,70
a 2 0,70
b 2 2,12
b 5 2,12
", header = TRUE, dec = ",")
ave(dat$answer, dat$image, FUN = sd)
#[1] 0.7071068 0.7071068 2.1213203 2.1213203
修改强>
在评论中与Henry对话后,我决定编辑答案。幸运的是,因为在同一时间我意识到原始数据集使用逗号作为小数点
因此,首先要更改,在上面的dec = ","
中添加参数read.table
第二次更改,以显示由sd
指令创建的列ave
的完整解决方案。
dat2 <- dat[-3] # start with the OP's data without the 3rd column
dat2$sd <- ave(dat2$answer, dat2$image, FUN = sd)
dat2
# image answer sd
#1 a 1 0.7071068
#2 a 2 0.7071068
#3 b 2 2.1213203
#4 b 5 2.1213203
答案 1 :(得分:0)
我的理解是你想要每个图像的答案标准偏差。您可以按照图像对df进行分组,然后使用sd,它将使用dplyr为每个组计算separetly。
df <- data.frame(image = c('a', 'a', 'b', 'b'),
answer = c(1, 2, 2, 5))
library(dplyr)
df %>%
group_by(image) %>%
mutate(sd = sd(answer))