gpt4 book ai didi

r - 如何在 excel 中复制或复制 "fill"值向上或向下一定行数

转载 作者:行者123 更新时间:2023-12-04 09:37:24 25 4
gpt4 key购买 nike

我不知道如何简单地将 data.frame 值按整数向上或向下复制。

例如,如果我有这个 data.frame df:

randcol <- c("s","a","m","p","l", "e","d","a","t","a","h","e","l","l","o")
x <- c(NA,NA,"a",NA,NA,NA,NA,"b",NA,NA,NA,"c",NA,NA,NA)
df <- data.frame(randcol, x)

enter image description here

我不知道如何mutate() df$x 并将每个字符复制/填充到2 行,以实现这个新的 df:

enter image description here

有哪些好的方法?有没有dplyr方式?

谢谢。戴夫

最佳答案

我们使用“x”中的非 NA 值创建一个分组变量,然后执行replacement

library(dplyr)
df %>%
group_by(grp = cumsum(!is.na(x))) %>%
mutate(x = replace(x, 2:pmin(3,n()), x[1])) %>%
ungroup %>%
select(-grp)
# A tibble: 15 x 2
# randcol x
# <fctr> <fctr>
# 1 s <NA>
# 2 a <NA>
# 3 m a
# 4 p a
# 5 l a
# 6 e <NA>
# 7 d <NA>
# 8 a b
# 9 t b
#10 a b
#11 h <NA>
#12 e c
#13 l c
#14 l c
#15 o <NA>

或者另一种选择是先进行填充,然后在按'x'分组后将大于3的行号替换为NA

df %>%
tidyr::fill(x) %>%
group_by(x1 = x) %>%
mutate(x = case_when(row_number() >3 ~ NA_character_,
TRUE ~ as.character(x))) %>%
ungroup %>%
select(-x1)

关于r - 如何在 excel 中复制或复制 "fill"值向上或向下一定行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49584092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com