gpt4 book ai didi

r - 展开一个系列,然后填充剩余的列

转载 作者:行者123 更新时间:2023-12-04 05:35:27 25 4
gpt4 key购买 nike

我正在尝试扩展包含在部分数据框中的系列,并重复其余列中的值以填充新行。我有一个需要使用的分组变量,然后重新组合以再次拥有一个数据帧。这是我的意思的一个例子,以及我将如何分段进行:

df <- data.frame("group" = c(rep("A",3),rep("B",3)), val=rep(c(1,3,5),2))
values <- data.frame(val=seq(1:5))

df2.a <- df[df$group=="A",]
df3.a <- right_join(df2.a, values, "val")
df3.a$group <- "A"

df2.b <- df[df$group=="B",]
df3.b <- right_join(df2.b, values, "val")
df3.b$group <- "B"

df4 <- rbind(df3.a, df3.b)

在这里,df4 是我想要的输出。

但我确信使用 dplyr 或其他一些拆分-应用-组合方法可以提高效率,尽管我显然遗漏了一些东西。

从概念上讲,这对我来说很有意义:

df.interp <- df %>%
group_by(group) %>%
full_join(x=., y=values, by="val") %>%
fill(group)

虽然我无法在这里完成最后一行,因为我无法编辑分组变量。但是,如果我ungroup,那么我不再一次对一个组进行操作,并且我会用错误的值填充新行(数量不够)。

我确定我在这里遗漏了一些简单的东西......它是什么?

最佳答案

library(dplyr)
library(tidyr)

df %>%
group_by(group) %>%
complete(val = min(val):max(val))

# # A tibble: 10 x 2
# # Groups: group [2]
# group val
# <fct> <dbl>
# 1 A 1
# 2 A 2
# 3 A 3
# 4 A 4
# 5 A 5
# 6 B 1
# 7 B 2
# 8 B 3
# 9 B 4
# 10 B 5

关于r - 展开一个系列,然后填充剩余的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58984944/

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