【发布时间】:2017-03-05 11:07:02
【问题描述】:
我刚刚在 R 中合并纵向数据并发现了一个问题。我的数据框 df 看起来(大致)是这样的:
Clinic ID Year Result
A 1 2000 50
A 1 2002
A 1 2004
A 2 2000
A 2 2002
A 2 2004 1100
B 1 2000
B 1 2002
B 1 2004
我们需要具有测试结果的患者所有年份的数据,以及一种将结果值分配给该患者所有行的方法。我需要丢弃没有记录任何结果的患者。在此示例中,我需要保留诊所 A 中患者 1 和 2 的所有行,但丢弃诊所 B 中患者 1 的所有行。此外,在诊所 A 中,我需要患者 1 的所有行列出“50”,因为是他的测试结果。
我认为最终我可以使用:df[!is.na(df$Result),]... 但我无法弄清楚如何在删除之前将“结果”值共享给所有相关行不适用。
df <- transform(df, NewResult = (Clinic, ID, Fun=Function(Result) ifelse(Result>0 == Result, NA))
这不起作用;它返回了一个错误。指导非常感谢。
我需要的是:
Clinic ID Year Result
A 1 2000 50
A 1 2002 50
A 1 2004 50
A 2 2000 1100
A 2 2002 1100
A 2 2004 1100
B 1 2000 NA
B 1 2002 NA
B 1 2004 NA
【问题讨论】:
标签: r conditional transform