首页 > 解决方案 > If循环有几个条件

问题描述

我有以下数据框:

df1
Name      Ch1      Val1
A          a         x1
B          b         x2
C          a         x3
...

我想添加另一行,为我试图获得的循环提供解决方案:

for (i in nrow(df))
  if ( (df[i,3]>=-2)==T & (df3[i,3] <=2)==T & df[i,2]=="a"){
    df[i,4]<-TRUE
  }else if ((df[i,3]>2)==T & df[i,2]=="b"){
    df[i,4]<-TRUE
  }else (df[i,4]<-FALSE)

所以基本上如果 Val1 中的值在 -2 和 +2 的区间内并且 Ch1 是“a”它应该导致 TRUE 或者如果 Val1 大于 2 并且 Ch1 是“b”那么结果是 TRUE

否则它应该总是错误的。

我的循环似乎只返回第一行的结果,其余为 NA。知道错误在哪里吗?或解决此问题的另一种方法(即使我实际上还有更多 OR)

谢谢!

标签: rloopsif-statement

解决方案


如果我理解正确,您尝试创建一个包含真或假的新列。我会用dplyr这个。

df <- df %>% 
   mutate(new_column = case_when(
 Val1 >=-2  & Val1 <=2 & Ch1 =="a" ~ TRUE,
Val1 > 2 & Ch1 == "b" ~ TRUE,
TRUE ~ FALSE
))

推荐阅读