【发布时间】:2019-03-25 11:38:31
【问题描述】:
我有一个数据集,其中包含参与者 IDS 和每个参与者的 17 种不同测量值。
我需要删除离均值 3 个标准差的异常值。这需要针对每一列单独进行。
到目前为止,通过使用下面的代码,我已经设法将 NA 添加到每列的异常列中,但这对我没有多大帮助,因为我需要能够将 NA 与其余列一起添加到列中的数字或简单地删除异常值
理想情况下,我希望获得如下所示的文件:
ID measure1 measure2 ....measure17
1 10897 64436
2 184658 1739473
3 75758
4 746483 4327349 3612638
5 6444 36363 46447
到目前为止我使用过的代码:
phenotypes <- colnames(imaging_data_kept[,2:ncol(imaging_data_kept)])
for (i in phenotypes){
Min <- mean(imaging_data_kept[[i]]) - (3*sd(imaging_data_kept[[i]]))
Max <- mean(imaging_data_kept[[i]]) + (3*sd(imaging_data_kept[[i]]))
imaging_data_kept[[paste0(i,"_outliers")]] <- imaging_data_kept[[i]] <
Min | imaging_data_kept[[i]] > Max
}
样本数据:
SubjID M1 M2 M3 M4 M5
1000496 14898.1 9172 4902 5921.9 1428.2
1001121 5420.7 2855.5 4144 732.1 4960.2
1001468 7478.8 3401.4 5143.6 1106.5 4355.5
1004960 11316.4 8460.1 3953.4 5682.2 1717
1005040 15052.7 6362.8 3145.2 4593 1214.5
1005677 17883.3 6705.1 3943.5 4993.1 1373.1
1006128 6260.8 4274.6 5865 2002.3 4727.1
1006694 9292.8 3389.9 5141.6 1246.6 4135.7
1009080 10391.3 8372.1 2921.8 4008.6 860.4
1010482 9381.5 2743.4 4526.5 1160.4 3655.1
1011508 15598.5 7365.7 4279.4 6274.1 1757.1
【问题讨论】:
-
你有一些我们可以使用的示例数据吗?
-
SubjID M1 M2 M3 M4 M5 1000496 14898.1 9172 4902 5921.9 1428.2 1001121 5420.7 2855.5 4144 732.1 4960.2 1001468 7478.8 3401.4 5143.6 1106.5 4355.5 1004960 11316.4 8460.1 3953.4 5682.2 1717 1005040 15052.7 6362.8 3145.2 4593 1214.5 1005677 17883.3 6705.1 3943.5 4993.1 1373.1 10061271 5141.6 1246.6 4008.6 860.4 10143721/1914436521/40013721921/30137281,411193659998981/303655991/3015598/3436553990×42798年4月4日,6276.1111236598,472.3 4008.6,6276,62.3,4008.4,62.3。
标签: r