重构data.frame列值

0 r dataframe

对不起家伙,如果这是一个菜鸟问题.我需要有关如何循环我的数据帧的帮助.这是一个示例数据.

a <- c(10:29);
b <- c(40:59);
e <- rep(1,20);
test <- data.frame(a,b,e)
Run Code Online (Sandbox Code Playgroud)

我需要使用以下"a"列中的值来操作列"e"

对于所有的价值观

"a"<= 15,"e"= 1,

"a"> 15&<20,"e"= 2

"a"> 20&<25,"e"= 3

"a"> 25&<30,"e"= 4等等看起来像这样

result <- cbind(a,b,rep(1:4, each=5))
Run Code Online (Sandbox Code Playgroud)

我的实际数据帧长度超过100k.如果你能把我排除在外,那会很棒.

Bac*_*lin 11

data.frame(a, b, e=(1:4)[cut(a, c(-Inf, 15, 20, 25, 30))])
Run Code Online (Sandbox Code Playgroud)

更新:

Greg的注释提供了一个更直接的解决方案,无需通过子集化返回的​​因子对整数向量进行子集化cut.

data.frame(a, b, e=findInterval(a, c(-Inf, 15, 20, 25, 30)))
Run Code Online (Sandbox Code Playgroud)