我正在尝试测试我的数据集列以动态更改给定值。这些值来自先前的计算并且一直在变化,因此无法使用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',它会告知是否出现任何给定值。
答案 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>