如何用匹配的 P_ID 替换所有行的 NULL 值?

How can I replace NULL values with matching P_ID for all rows?

我的数据集有一个问题,如果我选择一名与其 P_ID 相关联的患者的数据,我会得到他服用了多少药物、进行了多少次测试以及做了什么的所有详细信息他得的病。但是一部分提供的详细信息使另一部分空白。因此,每当我尝试计算与与疾病 ID 相关的患者 ID 相关的药物时,它都会给我 1。以下是示例数据:

p_id    ds_id   sympton ds_from_date    ds_to_date  dr_id   dosage  dr_from_date    dr_to_date  tt_id   result  tt_date s_id
00047880    0002    Sympton of ALL  1999-1-23   2003-12-31  00096360    7   1999-1-23   2000-1-23   null    null    null    null
00047880    null    null    null    null    00024244    7   2000-1-23   2001-1-23   null    null    null    null
00047880    null    null    null    null    00054795    3   2001-1-23   2002-1-23   null    null    null    null
00047880    null    null    null    null    00063682    4   2002-1-23   2003-1-23   null    null    null    null
00047880    null    null    null    null    null    null    null    null    00796   Result of test  1999-1-23   null
00047880    null    null    null    null    null    null    null    null    00924   Result of test  2000-1-23   null
00047880    null    null    null    null    null    null    null    null    00781   Result of test  2001-1-23   null
00047880    null    null    null    null    null    null    null    null    00314   Result of test  2002-1-23   null
00047880    null    null    null    null    null    null    null    null    null    null    null    0000973218
00013243    0005    Sympton of Breast tumor 1998-5-20   2003-12-31  00033524    3   1998-5-20   1999-5-20   null    null    null    null
00013243    null    null    null    null    00061642    7   1999-5-20   2000-5-20   null    null    null    null
00013243    null    null    null    null    00079097    5   2000-5-20   2001-5-20   null    null    null    null
00013243    null    null    null    null    00057488    7   2001-5-20   2002-5-20   null    null    null    null
00013243    null    null    null    null    00076684    8   2002-5-20   2003-5-20   null    null    null    null
00013243    null    null    null    null    null    null    null    null    00111   Result of test  1998-5-20   null
00013243    null    null    null    null    null    null    null    null    00583   Result of test  1999-5-20   null
00013243    null    null    null    null    null    null    null    null    00781   Result of test  2000-5-20   null
00013243    null    null    null    null    null    null    null    null    00583   Result of test  2001-5-20   null
00013243    null    null    null    null    null    null    null    null    00164   Result of test  2002-5-20   null
00013243    null    null    null    null    null    null    null    null    null    null    null    0000940071

我要用准确的数据填充所有空值。喜欢:

00047880    0002    Sympton of ALL  1999-1-23   2003-12-31  00096360    7   1999-1-23   2000-1-23   00796   Result of test  1999-1-23   0000973218
00047880    0002    Sympton of ALL  1999-1-23   2003-12-31  00024244    7   2000-1-23   2001-1-23   00924   Result of test  2000-1-23   0000973218
00047880    0002    Sympton of ALL  1999-1-23   2003-12-31  00054795    3   2001-1-23   2002-1-23   00781   Result of test  2001-1-23   0000973218
00047880    0002    Sympton of ALL  1999-1-23   2003-12-31  00063682    4   2002-1-23   2003-1-23   00314   Result of test  2002-1-23   0000973218

即使行数没有减少,但我希望这些数据以某种方式被填满。这真的让我很困惑,我尝试了很多方法,但没有任何效果。因此,如果我在画面中将其可视化,它会显示患有特定疾病的人只服用了一种药物,其余药物被发送到 NULL 值。

让我们假设您的数据是这样的

在 R 中你可以这样做

df <- read.table(text = "Col1   Col2    Col3    Col4    Col5    Col6    Col7    Col8    Col9    Col10
aa  bb  cc  dd  ee  ff  gg  hh  ii  jj
aa  null    null    null    null    null    null    null    null    null
aa  null    kk  ll  null    null    null    null    null    oo
null    null    null    null    null    null    null    null    null    mm", header = T)
#1
df[df == 'null'] <- NA

#2
tidyr::fill(df, everything(), .direction = "down")

  Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9 Col10
1   aa   bb   cc   dd   ee   ff   gg   hh   ii    jj
2   aa   bb   cc   dd   ee   ff   gg   hh   ii    jj
3   aa   bb   kk   ll   ee   ff   gg   hh   ii    oo
4   aa   bb   kk   ll   ee   ff   gg   hh   ii    mm

在Excel中这样做

  • Select 并将所有 null 替换为空格

  • select 第一个空格,输入带有 =A5 的公式,即引用其正上方的单元格。
  • 复制这个公式
  • select 所有数据,find & replace -> go to special -> blanks -> ctrl + V 即粘贴和你完成了。

注意:Tableau 并非用于数据整理,我相信它也可以通过其他方法完成