如何在主表上分配多个元素,并在R中的第一个表中复制索引?

p5fdfcr1  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(44)

你好,谢谢你阅读我。我有一个主表,其中包含一个值“1”在列“val”,我想添加两个值在另一列,复制值的val,但我已经尝试过没有工作。例如:
主表:

x <- tibble(
  val = 1,
  val2 = NA
)

字符串
我试过:

x$val2[x$val == 1]  <- c(5,3)


但返回的是一个错误信息。我甚至尝试:

library(zeallot)
x$val2[x$val == 1]  %<-% c(5,2)


但只分配firs值。我的预期结果应该如下:

val  val2
  <dbl> <dbl>
1     1     5
2     1     2


有没有办法得到这个结果?

更新

使用reframe,代码仅在“瓦尔”中有1行时才有效,但如果我添加更多行,则会返回错误消息。例如:

x <- tibble(
  val = c(1,2,3),
  val2 = NA
)
reframe(x, val, val2=c(5, 2))

Error in `reframe()`:
! Can't recycle `val2 = c(5, 2)`.
Caused by error:
! `val2` must be size 3 or 1, not 2.
ℹ An earlier column had size 3.


如果尝试使用索引,如:

reframe(x, val[val == 1], val2=c(5, 2))

仅返回2行:

# A tibble: 2 × 2
  `val[val == 1]`  val2
            <dbl> <dbl>
1               1     5
2               1     2

对我来说,预期的结果应该是:

val  val2
  <dbl> <dbl>
1     1     5
2     1     2
3     2    NA
4     3    NA
wixjitnu

wixjitnu1#

我想你可能想加入?

library(tidyverse)

x <- tibble(
  val = c(1,2,3)
)

y <- tibble(
  val = 1,
  val2 = c(5, 2)
)

x |> left_join(y)
#> Joining with `by = join_by(val)`
#> # A tibble: 4 × 2
#>     val  val2
#>   <dbl> <dbl>
#> 1     1     5
#> 2     1     2
#> 3     2    NA
#> 4     3    NA

字符串
创建于2023-12-08带有reprex v2.0.2

相关问题