【发布时间】:2021-12-26 23:27:56
【问题描述】:
我有一个带有水质值列的 data.frame。
我想从每列中删除异常值,并添加 nodata NA 代替值。
编辑:
我想删除异常值如下:
异常值 > 分位数 95
和
异常值
我该怎么做?
我有一个我的情况的例子
df=read.table(text="st PH OD COD N
A 7.3 1.26301094 1.112359589 0.295842925
B 12.69875867 5.670646078 4.841748321 0.096958426
C 9.613564343 1.706277385 7.952266541 0.102672152
D 9.693461149 7.075560183 0.283503075 0.302494648
A 11.2031501 5.444756127 3.133271063 0.421172108
B 9.288552402 4.169068095 10.54049312 0.122900615
C 4.207333379 6.717653051 10.49073885 0.085634135
D 10.98593946 2.352068972 8.468436777 0.142284793
A 8.20679887 7.826764274 4.464242367 0.211200956
B 12.9165421 0.909886436 1.488358471 0.001640961
C 3.971088246 8.500668307 6.315208679 0.319835127
D 4.821068685 3.871082236 8.669284239 0.349317325
A 0.431563127 0.978922921 10.53756208 0.111929377
B 7.546887828 9.946840115 1.584013576 0.426681716
C 4.689617182 8.717656795 7.474709944 0.473463497
D 9.730568456 1.134763618 4.679810195 0.215744107
A 12.06381259 6.862549062 0.559497593 0.231984105
",
sep = "", header = TRUE)
【问题讨论】:
-
这完全取决于您定义的异常值。您可以使用很多方法定义异常值,并且每个值并不总是每个方法的异常值。此外,异常值并不是一个荒谬的值,有时异常值只是反映了变量的分布。 (例如,检查对数正态分布)
-
要将某些值设置为 NA,您需要类似
mtcars %>% mutate(across(everything(), function(x) ifelse(conditition, NA, x))) -
@user438383 你会如何定义这个
conditition?我之前会创建一个变量吗?你会如何更清楚地说明这一点? -
@wesleysc352 这个帖子可能对你有帮助 stackoverflow.com/questions/51951732/…
-
在 OP 添加至少尝试执行我们可以调试的他们想要的操作的代码之前,不应重新打开它。