2017-07-26 34 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中的条件功能是真实的。

相关问题