You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用dplyr实现跨tibble批量赋值到指定行的方法

解法

你可以用dplyr内置的rows_update()函数结合tidyr的pivot_wider()实现,全程是tidyverse语法,不需要逐元素赋值:

library(dplyr)
library(tidyr)
library(lubridate)

# 步骤1:将长格式的my_t2转为和my_t1列对齐的宽格式,同时标注要匹配的目标日期
update_data <- my_t2 %>%
  pivot_wider(names_from = column, values_from = value) %>%
  mutate(date = ymd("2021-10-29"))

# 步骤2:按date字段匹配,批量更新my_t1的对应行
my_t1 <- my_t1 %>%
  rows_update(update_data, by = "date")

运行后输出的my_t1就符合要求:

# A tibble: 3 × 5
  date       col1  col2  col3  col4
  <date>     <dbl> <dbl> <dbl> <dbl>
1 2021-10-30    NA    NA    NA    NA
2 2021-10-29    10    20    30    40
3 2021-10-28    NA    NA    NA    NA

说明

  • 该方法不需要手动指定列名,即使后续my_t2的列名、列数量发生变化,代码也不需要修改就能自动适配
  • rows_update是dplyr专门用来批量更新指定行的函数,匹配逻辑清晰,避免base R赋值可能出现的索引错误

内容的提问来源于stack exchange,提问作者Portland

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:09:06