2017-07-06 61 views
-1

我有一列是數據框的一部分,df。它充滿整數。假設這是現實中一天出售的房屋數量。我們稱之爲df$houses。我想做第二個欄目,名稱爲df$quant,其中房屋的數量是分類的,0是一天內出售的0-2套房屋,1套是3-5套房屋,2套是6-9套房屋,3套是10套房屋?我可以分兩步做。在數據框中創建一個新變量並在一個步驟中更改它的值

1)從df$houses創建新列df$quant

df$quant <- df$houses 

2)改變df$quant值:

df$quant[which(df$quant <= 2)] <- 0 

我想這樣做在一個一步,使新的變量,並填寫適當的值。大多數情況下,所以我不必擔心在第二步中獲取代碼行的順序是正確的。它會更強大。

這可以用if語句來完成嗎?

非常感謝。

+2

看一看'cut'這將更好地適應在這種情況下? –

回答

2

我會做這樣的事情:(使用cut

x <- 1:11 
df <- data.frame(x) 

myFunction <- function(x) as.integer(cut(x, c(-1, 2, 5, 9, max(x)))) - 1 
df$new <- myFunction(df$x) 
df 
    x new 
1 1 0 
2 2 0 
3 3 1 
4 4 1 
5 5 1 
6 6 2 
7 7 2 
8 8 2 
9 9 2 
10 10 3 
11 11 3 
+1

可能需要將cut函數中的第一個中斷從'0'更改爲'-1'或'-Inf',以確保在出售零售房屋時不存在「NA」值。 –

+0

這應該工作。謝謝! –

相關問題