2017-05-22 79 views
0

我有一個data.frame設置像這樣的R A行:如何刪除基於第一列

df <- data.frame(units = c(1.5, -1, 1.4), 
       what = c('Num1', 'Num2', 'Num3')) 

,給了我這樣的事情:

units   what 
1 1.500000  Num1 
2 -1000000  Num2 
3 1.400000  Num3 

我希望能夠刪除整行,如果第一列中的數字是-1。所以理想情況下,循環遍歷整個數據框,並刪除單位列中具有-1的行。我一直在嘗試這樣的事情:

if(CONDITION TO REMOVE) { 
    print("deleting function...") 
    df <- df[-c(df[,'Num2']),] 
    } 

但它會刪除df其餘部分的所有內容。我只想刪除那一行(和整行)。

在此先感謝。

+2

是否'DF [哪位(DF $單位== - 1) ,]'爲你工作? – Lamia

+0

不,我得到這個錯誤'警告:$'中的錯誤:'閉'類型的對象不是子集' – Andrew

+0

它適用於我爲你給的虛擬數據集。你是否在'data.frame'類型的對象'df'上使用它? – Lamia

回答

1
newdf <- df[-which(df[,1] ==-1),] 

newdf是沒有在第一列中包含-1的行的df。

0

您可以使用dplyr,以更好地滿足您的需求:

df.new <- df %>% filter(units != -1) 

或者你也可以做到這一點使用基礎R

df.new <- df[df$units != -1, ]