首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可以使用带有多个条件的substr吗?

可以使用带有多个条件的substr吗?
EN

Stack Overflow用户
提问于 2021-06-08 10:49:12
回答 1查看 34关注 0票数 0

我有一个包含四列的数据帧: Time、ID、Serial、Reading。

序列号是指我在研究中使用的仪器的实际序列号。每个唯一的序列号对应一个物理气象站。因此,我根据"Serial“中的数字创建第五列。

到目前为止,这个方法运行得很好:

代码语言:javascript
运行
复制
weather[substr(weather$Serial,1,6)=="600655", "Station"]<- Station 1

然而,有时我们的仪器会在不同的站点之间交换。因此,我希望能够根据序列号和时间来填充Station列,例如,如果序列号匹配"600655“并且在8月之后,那么它将是Station 2。但是,如果它在8月之前,它将是Station 1。" Time”的格式是"YYYY-MM-DD HH:MM:SS“。

这个是可能的吗?或者,有没有更简单的方法来做这件事?我有大约50个气象站,为每个气象站做这件事是相当累人的。

EN

回答 1

Stack Overflow用户

发布于 2021-06-08 11:28:33

考虑使用站点名称、编号和更改日期创建一个单独的站点数据帧,然后按时间逻辑merge到天气数据帧和subset

代码语言:javascript
运行
复制
# NEW DATA FRAME OF ALL WEATHER STATIONS
stations <- data.frame(
    Station = c("Station 1", "Station 2", ...),
    Station_Number = c("600655", "600655", ...),
    Change_Date = as.POSIXCT("2020-07-31", "9999-12-31", ...)
)

# ADD NEW COLUMN FOR MERGING
weather$Station_Number <- substr(weather$Serial,1,6)

# MERGE AND SUBSET
final_df <- transform(
    subset(
        merge(weather, stations, by="Station_Number"),
        Time <= Change_Date
    ), 
    Change_Date=NULL, Station_Number=NULL
) # REMOVE HELPER COLUMNS

# MERGE AND SUBSET WITH BASE R PIPES (R 4.1+)
final_df <- merge(weather, stations, by="Station_Number") |>
    subset(Time <= Change_Date) |>
    transform(Change_Date=NULL, Station_Number=NULL)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67880802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档