R 替换一行中顶部1%分位数的所有值
我有一个数据框架,由395行和4973列组成,按月份排序。我的数据帧测试如下所示:R 替换一行中顶部1%分位数的所有值,r,replace,quantile,R,Replace,Quantile,我有一个数据框架,由395行和4973列组成,按月份排序。我的数据帧测试如下所示: Date FirmA FirmB FirmC FirmD 01-2015 20 NA 100 1000 02-2015 21 502 2000 9378 03-2015 22 3 2 100 04-2015 24 7000 5 1000 我想在每行中用NA替换每行顶部1%的分位数。 它应该像下面这样: Date
Date FirmA FirmB FirmC FirmD
01-2015 20 NA 100 1000
02-2015 21 502 2000 9378
03-2015 22 3 2 100
04-2015 24 7000 5 1000
我想在每行中用NA替换每行顶部1%的分位数。
它应该像下面这样:
Date FirmA FirmB FirmC FirmD
01-2015 20 NA 100 NA
02-2015 21 502 2000 NA
03-2015 22 3 2 NA
04-2015 24 NA 5 1000
我设法计算了每行的分位数,并将其放入一个新的列Test$quantile中
Test$Quantile <- apply(Test[-1],1,quantile,probs=c(.99), na.rm=TRUE)
Date FirmA FirmB FirmC FirmD Quantile
01-2015 20 NA 100 1000 982.00
02-2015 21 502 2000 9378 9156.66
03-2015 22 3 2 100 97.66
04-2015 24 7000 5 1000 6820.00
Test$Quantile我们可以使用replace
替换每行大于分位数的NA值
Test[-1] <- t(apply(Test[-1], 1, function(x)
replace(x, x> quantile(x, probs = 0.99, na.rm =TRUE), NA)))
Test
# Date FirmA FirmB FirmC FirmD
#1 01-2015 20 NA 100 NA
#2 02-2015 21 502 2000 NA
#3 03-2015 22 3 2 NA
#4 04-2015 24 NA 5 1000
Test[-1]分位数(x,probs=0.99,na.rm=TRUE),na)
试验
#日期firm a firm b firm c firm d
#1 01-2015 20 NA 100 NA
#2 02-2015 21 502 2000不适用
#3 03-2015 22 3 2 NA
#4 04-2015 24 NA 5 1000
太好了,非常感谢!将尽快接受:)