我想根据条件(例如,我在数据框中具有的所有变量的+/- 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”。
答案 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