如何解决引用不同的数据帧相同大小以有条件地改变结果数据帧
我想将存储在不同数据帧(相同大小)中的值包含在条件中,以便为结果数据帧生成值。 我的数据: int 包含为许多人(按行)测量的不同特征(m2、m4、m1e3)的强度。
int<-data.frame(int_m2=c(33,32,35),int_m4=c(111,113,118),int_m1e3=c(104,99,110))
View(int)
针对每个特征(m2、m4、m1e3)进行 3 种不同的质量评估(s_、p_、i_)。
s_<-data.frame(s_m2=rep(8,3),s_m4=rep(100,s_m1e3=c("NA",100,100 ))
p_<-data.frame(p_m2=rep(10,p_m4=rep(10,p_m1e3=c("NA",10,10 ))
i_<-data.frame(i_m2=rep(0.1,i_m4=rep(0.5,i_m1e3=c("NA",0.1,0.5 ))
如果条件为真,我需要粘贴 int 强度的结果以进行质量评估。在“NA”或 FALSE 的情况下,值应为 0。
质量评价条件: 如果条件(s_[i,j] >9 & p_[i,j] 0.2
预期结果:
res<-data.frame(m2=c(0,0),m4=c(111,m1e3=c(0,110 ))
精心的咆哮: 我的目标是将其应用于大数据集,并使用 foreach 和 dopar 使其更快。 但是,在尝试了 mutate、ifelse、sappy 或老派 if/else 循环的组合后,我总是陷入困境,如果应用于数据框,如何为条件更改输入。我在广泛的研究中发现的所有内容都是应用于数据帧的条件的常量。 所以我的每次尝试都是半成品代码,因此不是很有用的分享。 我们非常欢迎任何有关该主题的进一步阅读的建议。
解决方法
不是循环遍历i
,j
,而是在整个数据集上创建多个逻辑表达式,并乘以int
。那些 FALSE
(-> 0
) 相乘为相应的 'int' 返回 0,而 TRUE
(-> 1
) 将从 'int' 返回相同的值
(s_ > 9 & p_ < 20 & i_ > 0.2) * int
-输出
int_m2 int_m4 int_m1e3
1 0 111 0
2 0 113 0
3 0 118 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。