全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1944 10
2018-11-16
各位大神好:
请教个问题--
已知一个向量
x<-c(1,2,3,0.2,0.034,23,2,4,2,45,767,897,2,1,64,16,19,54,0.9,0,76,3,2,33,45,65,7,87,100,1324,,654,0.00543)
如何求得向量c截去小于(均值-3*标准偏差)和大于(均值+3*标准偏差)之后的值?如果连续截取10次呢?用R语言代码如何实现?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-11-16 11:02:01
急求,麻烦看到的大神帮助一下,可有偿
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-16 11:25:28
x<-c(1,2,3,0.2,0.034,23,2,4,2,45,767,897,2,1,64,16,19,54,0.9,0,76,3,2,33,45,65,7,87,101324,654,0.00543)

for (i in c(1:10)){
  x_new=x[x>mean(x)-3*sd(x)]
  x_new=x[x<mean(x)+3*sd(x)]
  x=x_new
}

x
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-16 12:19:48
rainningpoet 发表于 2018-11-16 11:25
xmean(x)-3*sd(x)]
  x_new=x[x
谢谢您嘞,但是好像和截尾一次的结果是一样的呀
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-16 14:37:31
trim <- function(x,n) {
  nsd <- n*sd(x)
  return(x[(x < mean(x)-nsd) & (x > mean(x)+nsd)])
  }
x
trim(x,3)

你的例子跑不出来是因为你的标准差太大了。如果要跑10次,就x %>% trim(3) %>% trim(3) %>% trim(3)这样下去10次,或者用reduce
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-16 14:54:36
https://www.r-bloggers.com/repeatedly-applying-a-function/
关于如何连续截取10次,看看这个文章
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群