根据行值

时间:2017-03-29 16:31:09

标签: r

我有一个大向量(数据框的列),其中包含整数1到30的值。我想用1到6替换数字,6到10用5,11到15用9 ... < / p>

> x3 <- sample(1:30, 100, rep=TRUE)
> x3
  [1] 13 24 16 30 10  6 15 10  3 17 18 22 11 13 29  7 25 28 17 27  1  5  6 20 15 15  8 10 13 26 27 24  3 24  5  7 10  6 28 27  1  4 22 25 14 13  2 10  4 29 23 24 30 24 29 11  2 28 23  1  1  2
 [63]  3 23 13 26 21 22 11  4  8 26 17 11 20 23  6 14 24  5 15 21 11 13  6 14 20 11 22  9  6 29  4 30 20 30  4 24 23 29

正如我所提到的,这是一个数据框中的列,并且具有上面的赋值,我想创建一个不同的列。如果我这样做,我必须这样做30次。

myFrame$NewColumn[myFrame$oldColumn==1] <- 1
myFrame$NewColumn[myFrame$oldColumn==2] <- 1
myFrame$NewColumn[myFrame$oldColumn==3] <- 1
...

更好的办法是什么?

2 个答案:

答案 0 :(得分:2)

我们可以使用User-Agent执行此操作(假设您的意思是'...'是10,11,12):

cut

答案 1 :(得分:1)

你有没有尝试过:

myFrame$NewColumn[myFrame$oldColumn > 0 & myFrame$oldColumn< 6] <- 1
myFrame$NewColumn[myFrame$oldColumn > 5 & myFrame$oldColumn< 11] <- 1
...

甚至更好:

myFrame$NewColumn <- as.integer((myFrame$oldColumn - 1)/5)) * 4 + 1