r - 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)
谢谢!
解决方案
如果我理解正确,您尝试创建一个包含真或假的新列。我会用dplyr
这个。
df <- df %>%
mutate(new_column = case_when(
Val1 >=-2 & Val1 <=2 & Ch1 =="a" ~ TRUE,
Val1 > 2 & Ch1 == "b" ~ TRUE,
TRUE ~ FALSE
))
推荐阅读
- r - 基于一个条件跨多列创建二元列
- excel - 按 ROW 对列进行索引并在字符串中查找部分匹配项
- flutter - 如何修复 TeamCity Flutter 构建中的“加载测试失败”
- html - 视频无法使用声音 HTML 自动播放
- android - 如何在 Android 上使用可绘制的 xml 文件修复背景图像?
- r - 如何知道不同年份的年度变化/检查每年的平均值?
- python - 如何在 Pandas 列中拆分逗号分隔的单词列表?
- swift - 为什么我的 self.init 不会自动填充便利初始化程序?
- python - 如何将相同的值添加到字典中的不同键?
- java - 运行服务“Google Play 服务”使用大量 RAM