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

R语言如何填充DataFrame的Logger列,替换为前一个带下划线的标识值

R实现Logger列分组填充需求

核心思路

先识别出所有带下划线的分组标识,将其余位置的Logger值设为缺失值,再向下填充缺失值即可匹配需求,无需使用padr包。

解法1:tidyverse实现(最简洁)

library(tidyverse)

# 原始数据
df <- data.frame("Logger" = c("119_1", "1","2","3","119_2","5","6","7","119_3","7","8","9"),
                 "Temp"  =c (4.5, 5.7, 3.8, 8.9, 8.6, 10.5, 11.0, 7.8, 5.6, 7.8, 9.9, 17.3),
                 "RH"    = c(6.5, 2.7, 11.8, 4.9, 3.6, 12.5, 115.0, 3.8, 9.6, 1.8, 3.9,5.3))

# 处理数据
df_result <- df %>%
  # 不含下划线的Logger替换为缺失值
  mutate(Logger = ifelse(grepl("_", Logger), Logger, NA_character_)) %>%
  # 向下填充缺失值
  fill(Logger, .direction = "down")

运行后得到的df_result和你需求的df_desired完全一致。

解法2:基础R实现(无需额外安装包)

# 原始数据
df <- data.frame("Logger" = c("119_1", "1","2","3","119_2","5","6","7","119_3","7","8","9"),
                 "Temp"  =c (4.5, 5.7, 3.8, 8.9, 8.6, 10.5, 11.0, 7.8, 5.6, 7.8, 9.9, 17.3),
                 "RH"    = c(6.5, 2.7, 11.8, 4.9, 3.6, 12.5, 115.0, 3.8, 9.6, 1.8, 3.9,5.3))

# 生成分组标识,每遇到一个带下划线的Logger就新增一个分组
group_id <- cumsum(grepl("_", df$Logger))
# 每个分组统一取第一个Logger值替换整组
df$Logger <- ave(df$Logger, group_id, FUN = function(x) x[1])

运行后会直接修改原始df的Logger列为目标值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:57:05