如何基于其他列的值在data.table中创建新列

用户名

我具有data.table格式的以下数据结构:

ID  Cycle  Cycle_Day Cycle_Date  Positive_Test_Date
1   1      1         3/28/2019   NA
1   1      2         3/29/2019   NA
1   1      3         3/30/2019   NA
1   1      NA        NA          3/29/2019
1   2      1         4/23/2019   NA 
1   2      2         4/24/2019   NA
1   2      3         4/25/2019   NA
1   2      NA        NA          4/25/2019
2   1      1         3/18/2019   NA
2   1      2         3/19/2019   NA
2   1      3         3/20/2019   NA
2   1      NA        NA          3/18/2019
2   2      1         4/23/2019   NA 
2   2      2         4/24/2019   NA
2   2      3         4/25/2019   NA
2   2      NA        NA          4/24/2019

我想创建一个新列“ LH_Date”,它将为每个ID和每个周期复制事件Cycle_Date和Positive_Test_Date匹配中的日期。否则,值为NA。这是它的外观:

ID  Cycle  Cycle_Day Cycle_Date  Positive_Test_Date LH_Date
1   1      1         3/28/2019   NA                 NA 
1   1      2         3/29/2019   NA                 3/29/2019
1   1      3         3/30/2019   NA                 NA
1   1      NA        NA          3/29/2019          NA
1   2      1         4/23/2019   NA                 NA
1   2      2         4/24/2019   NA                 NA
1   2      3         4/25/2019   NA                 4/25/2019
1   2      NA        NA          4/25/2019          NA
2   1      1         3/18/2019   NA                 3/18/2019
2   1      2         3/19/2019   NA                 NA
2   1      3         3/20/2019   NA                 NA 
2   1      NA        NA          3/18/2019          NA
2   2      1         4/23/2019   NA                 NA
2   2      2         4/24/2019   NA                 4/24/2019
2   2      3         4/25/2019   NA                 NA
2   2      NA        NA          4/24/2019          NA
chinsoon12

另一个选择是使用索引查找符合条件的行,并仅更新这些行:

#for each group of ID and Cycle, 
#find the row indices where Cycle_Date equals the last Positive_Test_Date 
idxDT <- DT[, .I[Cycle_Date==Positive_Test_Date[.N]], .(ID, Cycle)]

#for those row indices, set the LH_Date to be Cycle_Date 
#(NA rows or excluded rows defaults to NA by design in data.table)
DT[idxDT$V1, LH_Date := Cycle_Date]

idxDT看起来像这样并idxDT$V1提取列V1

   ID Cycle V1
1:  1     1  2
2:  1     1 NA
3:  1     2  7
4:  1     2 NA
5:  2     1  9
6:  2     1 NA
7:  2     2 14
8:  2     2 NA

.I在data.table中包含行索引。来自?.I

.I是一个等于seq_len(nrow(x))的整数向量。分组时,它保留组中每个项目的行位置(x)。这对于j中的子集很有用;例如DT [,.I [which.max(somecol)],by = grp]。

输出:

    ID Cycle Cycle_Day Cycle_Date Positive_Test_Date   LH_Date
 1:  1     1         1  3/28/2019               <NA>      <NA>
 2:  1     1         2  3/29/2019               <NA> 3/29/2019
 3:  1     1         3  3/30/2019               <NA>      <NA>
 4:  1     1        NA       <NA>          3/29/2019      <NA>
 5:  1     2         1  4/23/2019               <NA>      <NA>
 6:  1     2         2  4/24/2019               <NA>      <NA>
 7:  1     2         3  4/25/2019               <NA> 4/25/2019
 8:  1     2        NA       <NA>          4/25/2019      <NA>
 9:  2     1         1  3/18/2019               <NA> 3/18/2019
10:  2     1         2  3/19/2019               <NA>      <NA>
11:  2     1         3  3/20/2019               <NA>      <NA>
12:  2     1        NA       <NA>          3/18/2019      <NA>
13:  2     2         1  4/23/2019               <NA>      <NA>
14:  2     2         2  4/24/2019               <NA> 4/24/2019
15:  2     2         3  4/25/2019               <NA>      <NA>
16:  2     2        NA       <NA>          4/24/2019      <NA>

数据:

library(data.table)
DT <- fread("ID  Cycle  Cycle_Day Cycle_Date  Positive_Test_Date
1   1      1         3/28/2019   NA
1   1      2         3/29/2019   NA
1   1      3         3/30/2019   NA
1   1      NA        NA          3/29/2019
1   2      1         4/23/2019   NA 
1   2      2         4/24/2019   NA
1   2      3         4/25/2019   NA
1   2      NA        NA          4/25/2019
2   1      1         3/18/2019   NA
2   1      2         3/19/2019   NA
2   1      3         3/20/2019   NA
2   1      NA        NA          3/18/2019
2   2      1         4/23/2019   NA 
2   2      2         4/24/2019   NA
2   2      3         4/25/2019   NA
2   2      NA        NA          4/24/2019")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

熊猫:如何创建基于其他列值的条件对其他列求和的列?

来自分类Dev

如何基于列值创建其他行或数据框

来自分类Dev

R,data.table:如何基于存储在字符向量中的其他列的名称来分配某些列的值?

来自分类Dev

如何基于方程式和其他列的唯一值创建新列?

来自分类Dev

基于主键从其他列中的数据创建新列

来自分类Dev

基于其他列在 Sql Server 中创建新列

来自分类Dev

如何在Pandas数据框中的其他列中填充基于新列的值

来自分类Dev

如何基于Python Pandas中的其他列在DataFrame中创建新列?

来自分类Dev

基于行中的列值以及df中其他行中的列值创建新列?

来自分类Dev

如何基于SQL中的其他列创建列?

来自分类Dev

在data.table中创建新列

来自分类Dev

R data.table-在新列中设置值,其他列中的值= 1

来自分类Dev

基于其他列值的估算值

来自分类Dev

根据其他列中的NA值创建新列

来自分类Dev

根据其他列中的值创建新列

来自分类Dev

Python Pandas:基于组内的最大值创建新列,但使用其他(字符串)列中的值

来自分类Dev

一个data.table列基于其他列的最大值

来自分类Dev

如何基于两列是否包含其他列中存在的值返回值

来自分类Dev

如何基于其他列中的值求和单个列的值?

来自分类Dev

如何使用基于Python中其他列值的值填充列?

来自分类Dev

如何基于其他列字符串为新列分配值?

来自分类Dev

基于其他列值的汇总

来自分类Dev

基于其他列的值的条件更改

来自分类Dev

基于其他列的 TSQL 聚合值

来自分类Dev

如何使用其他多个列中的所有非NA值创建新列?

来自分类Dev

如何用熊猫中其他列的.size()值创建新列?

来自分类Dev

如何基于SQL中的其他列值选择布尔列?

来自分类常见问题

如何基于python中其他列的索引值复制相同的值

来自分类Dev

如何基于python中其他列的索引值复制相同的值

Related 相关文章

  1. 1

    熊猫:如何创建基于其他列值的条件对其他列求和的列?

  2. 2

    如何基于列值创建其他行或数据框

  3. 3

    R,data.table:如何基于存储在字符向量中的其他列的名称来分配某些列的值?

  4. 4

    如何基于方程式和其他列的唯一值创建新列?

  5. 5

    基于主键从其他列中的数据创建新列

  6. 6

    基于其他列在 Sql Server 中创建新列

  7. 7

    如何在Pandas数据框中的其他列中填充基于新列的值

  8. 8

    如何基于Python Pandas中的其他列在DataFrame中创建新列?

  9. 9

    基于行中的列值以及df中其他行中的列值创建新列?

  10. 10

    如何基于SQL中的其他列创建列?

  11. 11

    在data.table中创建新列

  12. 12

    R data.table-在新列中设置值,其他列中的值= 1

  13. 13

    基于其他列值的估算值

  14. 14

    根据其他列中的NA值创建新列

  15. 15

    根据其他列中的值创建新列

  16. 16

    Python Pandas:基于组内的最大值创建新列,但使用其他(字符串)列中的值

  17. 17

    一个data.table列基于其他列的最大值

  18. 18

    如何基于两列是否包含其他列中存在的值返回值

  19. 19

    如何基于其他列中的值求和单个列的值?

  20. 20

    如何使用基于Python中其他列值的值填充列?

  21. 21

    如何基于其他列字符串为新列分配值?

  22. 22

    基于其他列值的汇总

  23. 23

    基于其他列的值的条件更改

  24. 24

    基于其他列的 TSQL 聚合值

  25. 25

    如何使用其他多个列中的所有非NA值创建新列?

  26. 26

    如何用熊猫中其他列的.size()值创建新列?

  27. 27

    如何基于SQL中的其他列值选择布尔列?

  28. 28

    如何基于python中其他列的索引值复制相同的值

  29. 29

    如何基于python中其他列的索引值复制相同的值

热门标签

归档