根据给定的间隔将矢量拆分为3列

时间:2017-06-02 14:29:44

标签: r vector split

非常基本的问题,但不知道如何开始:

我已经生成了200个随机值:

SE <- runif(200, 0, 0.65)

除此之外,我想创建3列:se.swse.mse.st,其中包含来自区间[0,0.05],] 0.05,0.35]和0.35的值,分别为0.65。

我该如何实现这个目标?

我尝试过使用嵌套的ifelse函数,但它没有用。这似乎是一个简单的问题,我花了太多时间... ...

2 个答案:

答案 0 :(得分:0)

> SE.SW <- SE[SE >=0 & SE <= .05 ]
> SE.M <- SE[SE >.05 & SE <= .35 ]
> SE.ST <- SE[SE >.35 & SE <= .65 ]

答案 1 :(得分:0)

在基地R中使用findIntervalsplit

x <- findInterval(SE, c(0,0.05,0.35,0.65))
split(SE, x)

# $`1`
# [1] 0.04016108

# $`2`
# [1] 0.1725806 0.2418805 0.1310933

# $`3`
# [1] 0.3723547 0.5903351 0.5839533 0.6140389 0.4295186 0.4089241

或使用cutsplit

x <- cut(SE, breaks = c(0,0.05,0.35,0.65))
split(SE, x)

# $`(0,0.05]`
# [1] 0.04016108

# $`(0.05,0.35]`
# [1] 0.1725806 0.2418805 0.1310933

# $`(0.35,0.65]`
# [1] 0.3723547 0.5903351 0.5839533 0.6140389 0.4295186 0.4089241

数据

set.seed(1)
SE <- runif(10, 0, 0.65)