测试列是否与给定值匹配

时间:2018-02-16 11:18:45

标签: r match vectorization

我正在尝试测试我的数据集列以动态更改给定值。这些值来自先前的计算并且一直在变化,因此无法使用ifelse命令。

我尝试使用for循环,因为它需要灵活但不起作用。我的问题的一个例子如下:

require(dplyr)
data <- data.frame(step=c(1,1,1,1,3,3,3,3,4,4,5,6,7,7,7,7,4,4,4,4,6,5,7,7,3,4,3,1))
data <- mutate(data, col2 = 0)
data <- mutate(data, col3 = 0)
data_check <- data.frame(step=c(3,4))    

for(j in 1:length(data_check)){
  for(i in 1:nrow(data)){
    if(data$step[i] == data_check[j]){
      data <- mutate(data, Occurrence = 1)
    } else {
      data <- mutate(data, Occurrence = 0)
    }
  }
}

目标是在数据集中获得一个额外的列'Occurrence',它会告知是否出现任何给定值。

1 个答案:

答案 0 :(得分:0)

我无法理解你要做的是什么,但是如果你试图测试data$step中是否存在data_check中的每个条目,那么就像:

data_check <- list(3,4) # so you can use the %in% operator

data$Occurrence <- data$step %in% data_check

 [1] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
[13] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
[25]  TRUE  TRUE  TRUE FALSE

编辑:正如Eumenedies所说,你想对as.numeric()适用。{/ p>