![](/img/trans.png)
[英]How do I plot dendrogram leaves by a given value (depth in a sediment core) rather than in sequential order?
[英]tidyr::fill() with sequential integers rather than a repeated value
按id
分组后,我希望将dist_from_top
的NA替换为顺序值,以使dist_from_top
变为c(5,4,3,2,1,5,4,3,2)。 我使用每个id
分组中的一个dist_from_top
值作为各种种子来填充dist_from_top
的值。
tidyr::fill()
可以在整个分组中填充相同的值,但是我无法想到一种在填充时将其增加或减少1的方法。 任何帮助是极大的赞赏。
library(dplyr)
library(tidyr)
df <-
tribble(
~id, ~mgr, ~dist_from_top,
"A", "B", NA,
"A", "C", NA,
"A", "D", 3,
"A", "E", NA,
"A", "F", NA,
"B", "C", NA,
"B", "D", 4,
"B", "E", NA,
"B", "F", NA
)
使用fill()
的“几乎在那里”解决方案
df %>%
group_by(id) %>%
fill(dist_from_top, .direction = "up") %>%
fill(dist_from_top, .direction = "down")
创建一个从任何起点开始在每个组中向下计数的列:
... %>% mutate(rn = -row_number())
对于dist_from_top
不是NA
一行,添加由dist_from_top
和rn
之差定义的偏移量:
... %>% mutate(dist_from_top = rn + max(dist_from_top - rn, na.rm = TRUE))
假设只有一个不是NA
值,则此方法仅使用max()
来选择一个值。
两种mutate()
操作都对组进行操作:
df %>%
group_by(id) %>%
mutate(rn = ...) %>%
mutate(dist_from_top = ...) %>%
ungroup() %>%
select(-rn)
如果存在全NA
组,则会显示警告。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.