【发布时间】:2018-04-17 15:13:49
【问题描述】:
对于一个项目,我需要预处理来自医院的数据并最终制作预测模型。
在我的一个预处理步骤中,我需要创建一个表示患者住院天数的列。这个数字是通过查看不同行中的其他几列来确定的。此外,患者可以在不同场合多次住院。如果这很令人困惑,我很抱歉。
我添加了一张数据框的图片。我想知道如何使用 R 进行参数以使列 cdays 脱离 Patientid 和 Date 列。 sample of my data
我已经尝试了很多方法来做到这一点。有些人使用带有计数器的for 和while 循环。而其他人则使用带有新向量的嵌套ifelse(因此我可以将当前行与之前的迭代行进行比较):
#i-1 en i c.days
df$c.days <- 0
df$i_min_1c.days <- 0
#i en i+1 date
iDate<-df$Date[1:(nrow(df)-1)]
i_plus_1Date<-df$Date[2:(nrow(df))]
#i en i+1 patientid
iPatientid<-df$Patientid[1:(nrow(df)-1)]
i_plus_1Patientid<-df$Patientid[2:(nrow(df))]
newNew<-c(ifelse(iPatientid==i_plus_1Patientid, ifelse(i_plus_1Date-iDate>1,1,df$i_min_1c.days + 1), 1), df$c.days[nrow(df)])
显然这不起作用,但我很绝望....谁能指出我正确的方向如何继续?
一些注意事项: - 完整的数据帧长 800k 行,宽 9 列(请记住转换将花费大量时间) - cdays 的值从 1 开始,因为它将用作乘数, - 如果第 i 次和第 i+1 次的日期差大于 1 天,则视为新会话,cdays 值为 1。
如果您需要更多信息,请随时询问。我会尽力!非常感谢你,我很抱歉我的英语不好。
【问题讨论】:
-
'这个数字是通过查看其他几列来确定的' - 请提供它们。
-
我建议您阅读一些关于提供一个好问题的内容:SO q/a on reproducibliity、SO's help/mcve 和 SO's how-to-ask。底线:如果您无法在新的/空的 R 会话中执行此问题中的代码,那么其他人也不能,通常很难提供相关的建议或答案。
-
(用不同的方式说与 r2e 相同的事情)我们不需要查看您的实际数据。相反,您应该努力为我们制作一个最小的可重现示例,以涵盖您面临的问题:stackoverflow.com/questions/5963269/…
-
从 Patientid 和 Date 列中创建 cdays 列 ...但是您的示例屏幕截图有这样的列 cdays。你的目标是什么?
-
我想知道如何用R代码制作这样一个专栏。我已经用我正在寻找的结果制作了一个样本。
标签: r dataframe bigdata nested-loops