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

求R函数提取行内多列最新日期,生成Recent_Date列处理入侵物种数据

按站点整理入侵物种数据:提取单行最新日期填充Recent_Date列

你需要找出每个站点的最新记录,以此将站点分类为处理中、已根除或未知,完全可以通过比较单行内多列日期来填充Recent_Date列,以下是针对不同工具的实现方法:

示例数据

TARGET_FIDTreatment_DatePresence_DateNon_Detection_DateRecent_Date
12021-09-302016-07-102021-10-05????-??-??
22019-05-312021-06-01NA????-??-??

实现方法

1. Excel/Google Sheets

针对单行的日期列,使用公式忽略空值/NA后取最大值:

  • Excel(旧版本需按Ctrl+Shift+Enter执行数组公式,新版本直接回车):

    =MAX(IF(NOT(ISNA(B2:D2)), B2:D2))
    

    公式会自动忽略NA值,返回该行三个日期列中的最新日期,之后将单元格格式设置为日期格式即可。

  • Google Sheets:

    =MAXIFS(B2:D2, B2:D2, "<>NA")
    

    或者直接用=MAX(B2:D2),Google Sheets会自动忽略文本型的NA值。

2. Python(Pandas)

如果用代码批量处理数据,可通过Pandas快速计算每行最新日期:

import pandas as pd

# 加载数据(根据实际数据源调整,这里以Excel为例)
df = pd.read_excel("invasive_species_data.xlsx")

# 将日期列转换为日期类型,自动识别无效值为NaT
date_columns = ["Treatment_Date", "Presence_Date", "Non_Detection_Date"]
df[date_columns] = df[date_columns].apply(pd.to_datetime, errors="coerce")

# 计算每行的最新日期,赋值给Recent_Date列
df["Recent_Date"] = df[date_columns].max(axis=1)

# 可选:将日期格式化为YYYY-MM-DD
df["Recent_Date"] = df["Recent_Date"].dt.strftime("%Y-%m-%d")

# 输出结果
print(df)

后续分类参考

得到Recent_Date后,可结合对应日期列的类型进行站点分类:

  • 若Recent_Date等于Non_Detection_Date,且后续无处理或存在记录:标记为已根除
  • 若Recent_Date等于Presence_Date:标记为处理中
  • 若所有日期列均为NA/无效值:标记为未知

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:20:29