gpt4 book ai didi

r - 如何在R中复制每个组级别的特定行数

转载 作者:行者123 更新时间:2023-12-04 08:59:58 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Repeat each row of data.frame the number of times specified in a column

(9 个回答)


12 个月前关闭。




Here is my data:
对于每个 x1 级别,我试图复制等于 number.class 的行数,并且我希望每一行的长度类从 Lmin..cm 开始。到 Lmax..cm。每行增加 1。我想出了这个代码:

test<-A.M %>% filter(x1=="Crenimugil crenilabis")
for (i in 1:test$number.class){test<-test %>% add_row()}
for (i in 1:nrow(test)){test[i,]=test[1,]}
for (i in 1:nrow(test)){test$length.class[i]<-print(i+test$Lmin..cm.)}
test$length.class<-test$length.class-1
这基本上有效并给了我预期的结果: 2
但是,这个脚本不允许我为每个物种运行它。
谢谢你。

最佳答案

在这里,我们可以使用 uncount来自 tidyr要复制行,请按“x1”和 mutate 进行分组'Lmin..cm' 通过添加 row_number()

library(dplyr)
library(tidyr)
A.M %>%
uncount(number.class) %>%
group_by(x1) %>%
mutate(`Lmin..cm.` = `Lmin..cm.` + row_number())

如果我们需要从 Lmin..cm 创建一个序列至 Lmax..cm ,然后代替 uncount ,我们可以使用 map2创建 seq uence 然后 unnest
library(purrr)
A.M %>%
mutate(new = map2(`Lmin..cm.`, `Lmax..cm`, ~ seq(.x, .y, by = 1)) %>%
unnest(c(new))

关于r - 如何在R中复制每个组级别的特定行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63607295/

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