我有一个带有个人id和两个特征("x"e"y")的数据帧,如下所示:
id = c("A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","A11","A12","A13","A14","A15","A16","A17","A18","A19","A20","A21","A22","A23","A24")
x = c(10,4,6,8,9,8,7,6,12,14,11,9,8,4,5,10,14,12,15,7,10,14,24,28)
y = c(1.5,1.2,5,2,0.8,4,1,1.1,1.2,1.4,1.3,1.6,0.9,0.8,1,1.1,1.3,1.5,1.2,1.1,1,1.2,1.1,1)
a = data.frame(id,x,y)
我希望有一个循环来迭代每个特征和每个个体,这样我就可以创建一个新的数据框(或a的新列),其中个体将有1(如果它是异常值),0如果不是异常值.将离群值视为偏离性状平均值±3 SD的任何点.
在本例中,"x"的异常值为28,"y"的异常值为5.因此,所需的结果可能如下所示:
id = c("A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","A11","A12","A13","A14","A15","A16","A17","A18","A19","A20","A21","A22","A23","A24")
x_out = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1)
y_out = c(0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
a_out = data.frame(id, x_out, y_out)
你知道怎么做循环吗?这个 idea 是,如果我包括新的特征或个人,我不需要改变循环.谢谢!