引用不同的数据帧(相同大小)以进行结果数据帧的条件更改
Referencing different data frames(same size) for conditional change of resulting data frame
我想将存储在不同数据帧(相同大小)中的值包含到条件中,以便为生成的数据帧生成值。
我的数据:
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,3), s_m1e3=c("NA", 100, 100 ))
p_<-data.frame(p_m2=rep(10,3), p_m4=rep(10,3), p_m1e3=c("NA", 10, 10 ))
i_<-data.frame(i_m2=rep(0.1,3), i_m4=rep(0.5,3), i_m1e3=c("NA", 0.1, 0.5 ))
我需要结果,如果质量评估的条件为 TRUE,则将粘贴来自 int 的强度。在“NA”或 FALSE 的情况下,值应为 0。
质量评价条件:
如果条件 (s_[i,j] >9 & p_[i,j] <20 & i_[i,j]> 0.2
预期结果:
res<-data.frame(m2=c(0,0,0),m4=c(111,113,118), m1e3=c(0, 0, 110 ))
详细的咆哮:
我的目标是将其应用于大数据集并使用 foreach 和 dopar 使其更快。
但是,在尝试组合 mutate、ifelse、sappy 或 old school if/else 循环之后,我总是卡在如何为数据框应用条件更改输入。我在广泛研究中发现的所有内容都是常量,因为条件适用于数据帧。
所以我的每次尝试都是半成品代码,因此不是很有用的分享。
我们非常欢迎任何有关进一步阅读该主题的建议。
不是在 i
、j
上循环,而是在整个数据集上创建多个逻辑表达式,然后与 int
相乘。那些 FALSE
(-> 0
) 乘 returns 0 对应 'int' 而 TRUE
(-> 1
) 将 return 相同来自 '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
我想将存储在不同数据帧(相同大小)中的值包含到条件中,以便为生成的数据帧生成值。 我的数据: 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,3), s_m1e3=c("NA", 100, 100 ))
p_<-data.frame(p_m2=rep(10,3), p_m4=rep(10,3), p_m1e3=c("NA", 10, 10 ))
i_<-data.frame(i_m2=rep(0.1,3), i_m4=rep(0.5,3), i_m1e3=c("NA", 0.1, 0.5 ))
我需要结果,如果质量评估的条件为 TRUE,则将粘贴来自 int 的强度。在“NA”或 FALSE 的情况下,值应为 0。
质量评价条件: 如果条件 (s_[i,j] >9 & p_[i,j] <20 & i_[i,j]> 0.2
预期结果:
res<-data.frame(m2=c(0,0,0),m4=c(111,113,118), m1e3=c(0, 0, 110 ))
详细的咆哮: 我的目标是将其应用于大数据集并使用 foreach 和 dopar 使其更快。 但是,在尝试组合 mutate、ifelse、sappy 或 old school if/else 循环之后,我总是卡在如何为数据框应用条件更改输入。我在广泛研究中发现的所有内容都是常量,因为条件适用于数据帧。 所以我的每次尝试都是半成品代码,因此不是很有用的分享。 我们非常欢迎任何有关进一步阅读该主题的建议。
不是在 i
、j
上循环,而是在整个数据集上创建多个逻辑表达式,然后与 int
相乘。那些 FALSE
(-> 0
) 乘 returns 0 对应 'int' 而 TRUE
(-> 1
) 将 return 相同来自 '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