【发布时间】:2021-12-02 09:25:51
【问题描述】:
我有 1 个df 如下
df <- data.frame(n1 = c(1,2,1,2,5,6,8,9,8,8),
n2 = c(100,1000,500,1,NA,NA,2,8,10,15),
n3 = c("a", "a", "a", NA, "b", "c",NA,NA,NA,NA),
n4 = c("red", "red", NA, NA, NA, NA,NA,NA,NA,NA))
df
n1 n2 n3 n4
1 1 100 a red
2 2 1000 a red
3 1 500 a <NA>
4 2 1 <NA> <NA>
5 5 NA b <NA>
6 6 NA c <NA>
7 8 2 <NA> <NA>
8 9 8 <NA> <NA>
9 8 10 <NA> <NA>
9 8 15 <NA> <NA>
首先,请查看我想要的输出
df
n1 n2 n3 n4
1 1 100 a red
2 2 1000 a red
3 1 500 a red
4 2 1 <NA> red
5 5 NA b <NA>
6 6 NA c <NA>
7 8 2 <NA> red
8 9 8 <NA> red
9 8 10 <NA> red
9 8 15 <NA> red
我之前发过这篇文章 (Adding values to one columns based on conditions)。然而,我意识到我需要再写一篇专栏来解决我的问题。
所以,我想通过询问来自n1、n2、n3 的条件来更新/添加n4 中的red。如果n3 == "a",并且 n1 的值与 a 相关联,则与 n1 的值在同一行的 n4 的值应添加红色(即row 3,4th)。同时,如果n1的值也与n2的值匹配(即2),那么n4的这一行也应该加上red。此外,n1 列的8 与整个类似的事物相关联。然后,如果我们还有 n2 或 n1 等于 8 的值,则该步骤将像以前一样复制。我希望它很清楚,如果不是,我想解释更多。 (听起来像是曲折的事情)。
-注意:tidyverse 和 baseR 也欢迎在这里帮助我。
请给我一些建议?
【问题讨论】:
-
假设 'n1' 的第 9 行是 9,因为 9 连接到 8,那仍然应该是 'red' 吗?
-
@akrun 是的,这就是我想要的,因为它们就像管道一样
-
那么,我猜它与igraph有关
-
听说过,但老实说,我对igraph一无所知
-
老实说,这是关于一棵大的系统发育树,而我在这里做的事情是找到代表植物类别的分支的颜色。我能做的唯一方法是使用
findMRCA函数找到common ancester,然后设置颜色。但是,由于树很大,似乎需要很长时间才能完全填充颜色,所以我想找到一种像我在这里发布的方法:)))