根据日期创建一个新列

时间:2020-02-24 07:40:47

标签: r

我需要在现有数据框上创建一个新列,作为“项目状态”。 该列中应包含诸如SIR_Received阶段,SIR_Approved阶段,TSS_FC_Stage,TSS_Actual_stage,EP_Received阶段,EP_Approved阶段,Lease_Approved阶段,RFC_FC_Stage, RFC_Actual_stage和WIP。

阶段是按顺序进行的,因此应在Project_Status列中捕获最新日期,例如,第5行的日期一直到“ EP_APP”列,因此在prject_status列中,其日期应为EP_Approved_Stage。

如果附件中有“ SIR_REC”列的日期,则表示其SIR_Received_stage 同样,对于所有日期,如果所有列均为空白,则项目状态为WIP。

enter image description here

新列应以红色突出显示在数据框中。

enter image description here

1 个答案:

答案 0 :(得分:0)

在过去的一个周末,这个具有确切数据集的确切问题已经重新发布,没有一个最小的可复制示例。 Please read the guidelines。另外,还询问了similar questions,可以在lots of information的Internet上找到how to do this

对于您的代码,您可能需要研究dplyr

library(dplyr)
df <- df %>% 
   mutate(Project_status = case_when(
           !is.na(RFC_ACT) ~ "RFC_Actual_stage",
           !is.na(RFC_FC) ~ "RFC_???",
           !is.na(LEASE_APP) ~ "???",
           !is.na(EP_APP) ~ "???",
           !is.na(EP_REC) ~ "EP_Received_stage",
           !is.na(TSS_ACT) ~ "TSS_Actual_stage",
           !is.na(TSS_FC) ~ "TSS_???_stage",
           !is.na(SIR_App) ~ "SIR_Approved stage",
           !Is.na(SIR_REC) ~ "SIR_Received_Stage",
           TRUE ~ "WIP")

该变异会创建一个名为Project_status的新列。使用case_when可以确定有关如何填充此列的条件。我假设WIP将是最后一个填充的列,因此如果不遗漏,您想使用该列。否则,您要使用最后一列之前的列,如果缺少该列之前的列,依此类推。case_when中的确切顺序取决于所需的顺序。由于您没有提供示例,因此所有列的Project_status列中应该包含什么,我只使用了???。您可以更改它。