我有一个我操纵的数据框,它的最终形式有时会根据是否存在某些值而改变形状。
一旦数据帧被处理并达到其最终形式,我希望在写入之前将列重新排序为特定的顺序。csv。
然而,由于某些列并不总是存在,我想知道是否有可能检查哪些列存在,哪些列存在,哪些列存在,我希望它们遵循特定的格式,哪些列不需要创建并用零填充。
我有一个解决方案,我认为它非常笨拙,可能会得到显著改进:在这个示例中,我检查列
taken_offline
存在于我的数据集中。如果是这样,我希望列以某种方式重新排序,并包括此列,如果不是这样,我希望
使\u脱机
创建并填充零,同时仍以相同方式重新排序。
理想情况下,我希望能够说“这是列的显示顺序。如果列不存在,我希望创建它并用零填充它”。
我知道一个好方法可能是从我的数据框中获取一个列名列表(
users
)然后根据所需的列顺序(如下所列)检查列名。然而,我不确定如何实现这个想法。
我该怎么做?
输出列应按以下顺序排列:
"date",
"storeName",
"firstName",
"lastName",
"conversation-request",
"conversation-accepted",
"acceptance_rate",
"conversation-missed",
"taken_offline",
"conversation-already-accepted",
"total_missed",
"conversation-declined"
我的代码(检查是否存在
使\u脱机
):
if("taken_offline" %in% colnames(users_final)){
users_final <- users_final[, c(
"date",
"storeName",
"firstName",
"lastName",
"conversation-request",
"conversation-accepted",
"acceptance_rate",
"conversation-missed",
"taken_offline",
"conversation-already-accepted",
"total_missed",
"conversation-declined"
)]
print("Taken offline occurrences.")
} else {
users_final$taken_offline <- 0
users_final <- users_final[, c(
"date",
"storeName",
"firstName",
"lastName",
"conversation-request",
"conversation-accepted",
"acceptance_rate",
"conversation-missed",
"taken_offline",
"conversation-already-accepted",
"total_missed",
"conversation-declined"
)]
print("No taken offline occurrences.")
}