如何基于标准偏差为R

时间:2019-12-17 21:38:23

标签: r

我想根据条件(例如,我在数据框中具有的所有变量的+/- 3标准偏差)从现有数据框中创建一个新的数据框“ data.frame.final”。 / p>

我有5个变量,我需要生成一个应用于所有对象的具有相同标准+/- 3 SD的新数据框。

tt <- "id_animal farm protein fat casein lactose
1  AG   3.0  9.0  2.3 1.5
2  AG   3.0  9.7  3.3 1.3
3  FA   2.0  7.6  4.3 2.4
4  AB   1.5  6.9  5.4 2.8
5  AB   2.9  7.3  3.4 2.9"

dataframe1 <- read.table (text=tt, header=T)

data.frame.final中,我只希望每个变量的值在+/- 3 SD之内。对于低于或高于3 SD的值,我想插入“ NA”。

1 个答案:

答案 0 :(得分:2)

示例数据中的值与平均值的差不超过3个标准差。这是修改后的示例

tx <- "id_animal farm protein fat casein lactose
1  AG   3.0  9.0  2.3 1.5
2  AG   3.0  910.7  3.3 1.3
3  FA   2.0  7.6  4.3 25.4
4  AB   1.5  6.9  555.4 2.8
5  AB   220.9  7.3  3.4 2.9"

df <- read.table (text=tx, header=T)

df

#   id_animal farm protein   fat casein lactose
# 1         1   AG     3.0   9.0    2.3     1.5
# 2         2   AG     3.0 910.7    3.3     1.3
# 3         3   FA     2.0   7.6    4.3    25.4
# 4         4   AB     1.5   6.9  555.4     2.8
# 5         5   AB   220.9   7.3    3.4     2.9

实际上,与平均值相比,仍然没有超过3个标准偏差的值。我将改用1个标准差。更改n_sds来控制它。

对于除前两列之外的所有列,replace的所有值都不为{!} between这两个值由mean(.) + c(-1, 1)*n_sds*sd(.)给出,即平均值减去{{1} }和均值加n_sds*sd(.),加上n_sds*sd(.)

NA