使用R中的dplyr将缺失值插入到数据框中,并填充其他列

ltqd579y  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(96)

我觉得我在风口浪尖上,但不能完全到达那里!
我有一个dataframe,其中一列是double。我想扩展这些值,以包括0.001值之间的所有值。例如,如果这是我的输入,
values = c(0.086,0.092, 0.099, 0.080,0.092, 1.02) sess = c(1, 1,1, 2, 2,2) phase = c(1,2,3,2,1,5) df = data.frame(values, sess, phase)
我希望输出看起来像这样,其中每个会话的最小值和最大值之间存在值,表示为0.001水平,同时会话列用适当的值填充。

output sess phase
 0.086     1 1
 0.087     1 
 0.088     1 
 0.089     1 
 0.090     1 
 0.091     1 
 0.092     1 2
 0.093     1 
 0.094     1
 0.095     1
 0.096     1
 0.097     1
 0.098     1
 0.099     1 3
 0.080     2 2
 0.081     2
 0.082     2
 0.083     2
 0.084     2
 0.085     2
 0.086     2
 0.087     2
 0.088     2
0.089     2
0.090     2
0.091     2
0.092     2 1
0.093     2
0.094     2
0.095     2
0.096     2
0.097     2
0.098     2
0.099     2
0.100     2
0.101     2
0.102     2 5
0.103     2
0.104     2

我可以使用“seq”来创建这个列,但是将它添加到现有的嵌套框架会给我带来麻烦。我觉得“加入”可能是合适的,但我不能完全得到它。

aurhwmvo

aurhwmvo1#

如果你group_by每个sess,那么你可以reframe,这样你的output列就是seq,在每个组中valuesmin最大值和max最大值之间。

library(dplyr)

df %>% 
  group_by(sess) %>% 
  reframe(output = seq(min(values), max(values), 0.001)) %>%
  select(2:1)
#> # A tibble: 955 x 2
#>    output  sess
#>     <dbl> <dbl>
#>  1  0.086     1
#>  2  0.087     1
#>  3  0.088     1
#>  4  0.089     1
#>  5  0.09      1
#>  6  0.091     1
#>  7  0.092     1
#>  8  0.093     1
#>  9  0.094     1
#> 10  0.095     1
#> # i 945 more rows
#> # i Use `print(n = ...)` to see more rows

相关问题