我应该如何多次分配二进制虚拟变量?

Posted

技术标签:

【中文标题】我应该如何多次分配二进制虚拟变量?【英文标题】:How should I go about assigning a binary dummy variable for a bunch of times? 【发布时间】:2014-07-02 14:00:52 【问题描述】:

我有两个电子表格。其中之一是大约 20000 排病人进入急诊室。每行都有一个日期/时间列,以及单独的日期和单独的时间列。显然,多个患者在同一天进入。另一个电子表格包含第一个电子表格中包含的每天 366 个日出和日落的日期和时间。

我想做的是在第一个电子表格中创建一个名为“is_night”的列,如果是白天,则将每个条目编码为 0(即患者输入的时间大于日出时间且小于日出时间)日落对应于患者进入的日期),如果是夜间则为 1(“其他”条件)

最简单的方法是什么?在 Excel 中进行时间比较是一件痛苦的事情,而 Python 给我带来了解析问题。请注意,我可以访问 Python 3(带有 Pandas)、R、Excel 和 Access。谢谢!

编辑:这是每个电子表格的列标题:

Patient Data:  row_id   day_of_week date_in time_in date_out    time_out    complaint   mdassigned  acuity_id   elapsed_time    triage  disp_desc   adm_dec adm_delay   diagnosis   icd date_time_in    date_time_out

Sun Data:  day_number   sunrise_time    sunset_time season  month   day year    is_dst  sunrise_time_dst    sunset_time_dst date    sunrise_date_time   sunset_date_time    sunrise_date_time_dst   sunset_date_time_dst

【问题讨论】:

从患者档案中获取日期/时间信息,在天文档案中查找日期,将患者时间与日出日落时间进行比较。 谢谢!但是我将如何在 Excel 单元格中编码,然后我可以为 366 个日期中的每个日期应用每个单元格? 我有一些 Python 代码可以相当准确地计算给定地理坐标(经度和纬度)的特定位置的日出和日落时间,这听起来可能很有用。当前代码源自我多年前在网络上找到的更旧的公共域代码,如果您有兴趣,我想我已经将它发布在某个地方的答案中。如果您想了解更多信息,请使用 LMK。 那可能很好,谢谢!我从海军的网站上得到了我的数据。它是文本格式,所以我将其保存为 .txt 并将其导入 Excel 电子表格。然后我根据原始数据集的日期范围将其分成日期和时间。 pnuts,我正在用每个电子表格的列标题更新我的原始帖子。 我曾经从海军网站数据中做类似的事情,但现在在代码中动态计算它。这是一个指向my answer 的链接,指向标题为javascript or Python - How do I figure out if it's night or day?的问题 【参考方案1】:

您可以使用 pandas,并尝试类似的方法。不知道你的变量和细节,但是下面显示的代码应该是可以理解的,你可以根据你的具体情况进行调整

# dates_df is a file with dates and sunrise and sunset times
# patiets_df is a file with patiens data

def get_sunrise(x):
    sunrise = dates_df[dates_df['date'] = x['date']].sunrise_time
    return sunrise

def get_sunset(x):
    sunset = dates_df[dates_df['date'] = x['date']].sunset_time
    return sunset

# add columns for sunrise and sunset to patients_df

patients_df['sunrise']=patients_df.apply(get_sunrise, axis = 1)
patients_df['sunset']=patients_df.apply(get_sunset, axis = 1)

# checking every admission time from patients_df if it is after sunset and before sunrise
patients_df['is_night'] = patients_df.apply(lambda x: x.time < x.sunrise and x.time > x.sunset, axis=1)

【讨论】:

这实际上看起来非常好,但我认为代码编译不正确。但这就是我想要做的。顺便说一句,你能像 Python 那样在一行中有多个赋值语句吗? 我没有测试过,因为我没有你的数据:(它可能不起作用,这是真的;)如果可以的话,请在你的问题中包含示例数据。【参考方案2】:

我想通了。我将这两个表都加载到 Access 中,根据日期进行了联接,然后在 Excel 中编写了一个快速 if 语句并且它工作了。

【讨论】:

不错,这个主意不错,我也考虑过使用 pandas 加入日期 :)

以上是关于我应该如何多次分配二进制虚拟变量?的主要内容,如果未能解决你的问题,请参考以下文章

Linux进程虚拟地址空间

如何从二进制文件中查找静态分配的大小?

将short的十六进制值分配给short [关闭]

批处理文件:为变量分配十进制值

如果分配该数组引发异常,你应该释放一个数组吗?

重新排列和排序