我有一个大向量(数据框的列),其中包含整数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
...
更好的办法是什么?
答案 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