2017-07-26 36 views
1

我已經在data.framedata創建一個新的空列:增值新建小區如果參數匹配其他細胞

data$new_column <- 0 

輸入的值會比較基於一定條件的所有行後更新。僞代碼將如下所示:

if (data$column_x == X & data$column_y == Y){ 
    data$new_column <- "New Data" # Only one cell should be update based on row & column ID 
} 

我不知道如何根據兩個不同列的條件更新其他列。我試圖提取row ID,並基於該嘗試更新新列,但它不工作了:

row_id <- which(data$column_x == X & data$column_y == Y) 
data[row_id, data$new_column ] <- "New Data" 

樣本數據

column_x column_y new_column 
    -34   12   0 
    -36   20   0 
    -36   12   0 
    -34   18   0 
    -34   10   0 
    -35   24   0 
    -35   16   0 
    -33   22   0 
    -33   14   0 
    -35   22   0 

任何人都可以請提出這個正確的做法?謝謝。

回答

1

你可以這樣做:

data <- data.frame(column_x = c(-34, -36, -36, -34, -34, -35, -35, -33, -33, -35), column_y = c(12, 20, 12, 18, 10, 24, 16, 22, 14, 22), new_column = 0) 

data$new_column[data$column_x == -36 & data$column_y == 12] <- 123 

data 

    column_x column_y new_column 
1  -34  12   0 
2  -36  20   0 
3  -36  12  123 
4  -34  18   0 
5  -34  10   0 
6  -35  24   0 
7  -35  16   0 
8  -33  22   0 
9  -33  14   0 
10  -35  22   0 
1

這裏是一個dplyr方法:

data <- data %>% mutate(., new_col = ifelse(column_x ==X && column_y ==Y, 'new_values', 0) 

這將創建一個名爲new_col新列0和對細胞new_values其中ifelse中的條件功能是真實的。

相關問題