我有以下價值觀
values <- seq(1,3)
我想要得到的資料框
# A tibble: 6 x 2
facet values
<dbl> <dbl>
1 1 1
2 2 1
3 2 2
4 3 1
5 3 2
6 3 3
這facet是一列,它說明遞回追加的迭代。
我目前的解決方案是
facet1 <- values %>% head(1) %>% tibble(facet = 1, values = .)
facet2 <- values %>% head(2) %>% tibble(facet = 2, values = .)
facet3 <- values %>% head(3) %>% tibble(facet = 3, values = .)
bind_rows(facet1, facet2, facet3)
需要更通用的解決方案 [編輯]
當前的解決方案不適用于我的用例,因為它們利用了在我之前的示例中的構面序列等于值的事實。
這是一個更通用的可重現示例,其中值與方面有很大不同。
set.seed(42)
values <- rnorm(3,0,.2)
df_recursive <- tribble(~facet, ~values,
1, 0.27,
2, 0.27,
2, -0.11,
3, 0.27,
3, -0.11,
3, 0.07)
# A tibble: 6 x 2
facet values
<dbl> <dbl>
1 1 0.27
2 2 0.27
3 2 -0.11
4 3 0.27
5 3 -0.11
6 3 0.07
uj5u.com熱心網友回復:
這是一個選項:
library(tidyverse)
values <- seq(1,3)
map_dfr(values, ~tibble(facet = .x, values = 1:.x))
#> # A tibble: 6 x 2
#> facet values
#> <int> <int>
#> 1 1 1
#> 2 2 1
#> 3 2 2
#> 4 3 1
#> 5 3 2
#> 6 3 3
編輯:這些方法都可以適應您的用例。例如:
set.seed(42)
values <- rnorm(3,0,.2)
map_dfr(1:length(values), ~tibble(facet = .x, values = values[1:.x]))
#> # A tibble: 6 x 2
#> facet values
#> <int> <dbl>
#> 1 1 0.274
#> 2 2 0.274
#> 3 2 -0.113
#> 4 3 0.274
#> 5 3 -0.113
#> 6 3 0.0726
uj5u.com熱心網友回復:
一種可能的解決方案:
library(dplyr)
tibble(facet=1:3) %>%
group_by(facet) %>%
summarise(values = seq_len(facet)) %>%
ungroup()
# A tibble: 6 x 2
facet values
<int> <int>
1 1 1
2 2 1
3 2 2
4 3 1
5 3 2
6 3 3
library(data.table)
data.table(facet=1:3)[, .(values = seq_len(facet)), by=facet]
facet values
<int> <int>
1: 1 1
2: 2 1
3: 2 2
4: 3 1
5: 3 2
6: 3 3
uj5u.com熱心網友回復:
一個基本的 R 解決方案,玩弄repand sequence:
v <- seq(1, 3)
data.frame(facet = rep(v, v), values = sequence(v))
facet values
1 1 1
2 2 1
3 2 2
4 3 1
5 3 2
6 3 3
這可以適應任何向量:
set.seed(42)
values <- rnorm(3, 0, .2)
v <- seq_along(values)
data.frame(facet = rep(v, v), values = values[sequence(v)])
facet values
1 1 0.27419169
2 2 0.27419169
3 2 -0.11293963
4 3 0.27419169
5 3 -0.11293963
6 3 0.07262568
AndS. 解決方案的基本 R 版本:
do.call(rbind.data.frame, lapply(v, \(x) data.frame(facet = x, values = seq(x))))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/527693.html
標籤:rdplyr
上一篇:如何在r中的一組觀察值之間切換值
