我有两个数据框:
df1 <- data.frame(A = c(1, 2, 3), B = c(0,0,3), C = c(3,2,1))
df2 <- data.frame(A = c(0, 2, 4), B = c(1,0,3), C = c(0,1,4))
我想通过在df1
和df2
之间应用一些条件逻辑,通过比较等效命名列之间的条目来生成第三个数据帧。因此逻辑将是:
df1$A == 0 and df2$A>0 ~ df3$A = "colonised"
df1$A < df2$A and df1$A != 0 ~ df3$A = "increased"
df1$A == df2$A and df1$A >0 ~ df3$A = "stable"
df1$A > df2$A and df2$A != 0 ~ df3$A = "decreased"
df1$A>0 and df2$A == 0 ~ df3$A = "extinct"
这些规则将应用于每个相应的列,因此df1 $ B v df2 $ B和df1 $ C v df2 $ C。上面的示例将给出以下结果df3
:
A B C
1 extinct colonised extinct
2 stable stable decreased
3 increased stable increased
利用dplyr
和的一种选择purrr
可能是:
map2_dfr(.x = df1,
.y = df2,
~ case_when(.x == 0 & .y > 0 ~ "colonised",
.x > 0 & .y == 0 ~ "extinct",
.x < .y ~ "increased",
.x == .y ~ "stable",
.x > .y ~ "decreased"))
A B C
<chr> <chr> <chr>
1 extinct colonised extinct
2 stable stable decreased
3 increased stable increased
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句