gpt4 book ai didi

r - R : Replace a column value with a value from same column after matching two other columns values 中的数据表

转载 作者:行者123 更新时间:2023-12-04 23:41:26 32 4
gpt4 key购买 nike

对于我的以下要求,我无法获得解决方案。
如果 data.table(如下)在 Col1 和 Col3 中有匹配的值。替换 Col2 值(旧的 New-Val)。

Col1  Col2    Col3
1 old a
1 old a
1 New-Val a

操作数据表后应如下所示:
  Col1  Col2    Col3
1 New-Val a
1 New-Val a
1 New-Val a

更新:

我写了 New-Val 来理解需求。但是我无法匹配这个值,因为它因不同的 Col1 和 Col3 值而异。例如如下:
Col1  Col2    Col3
1 blank a
1 blank a
1 New1 a
2 blank b
2 new2 b
2 new2 b

同样的条目是巨大的。所以我理想地想匹配 Col1 和 Col3,而在 Col2 中它是空白(总是),无论匹配的 Col1 和 Col3 值如何,都将被替换。

这应该被操纵为:
Col1  Col2    Col3
1 New1 a
1 New1 a
1 New1 a
2 new2 b
2 new2 b
2 new2 b

最佳答案

我们可以用 NA 替换“Col2”中的“空白”值并使用 na.locf用“Col1”和“Col3”分组的"new"值替换NA。

library(zoo)
dt[Col2=="blank", Col2 := NA]
dt[, Col2 := na.locf(Col2, fromLast=TRUE) ,.(Col1, Col3)]
dt
# Col1 Col2 Col3
#1: 1 New1 a
#2: 1 New1 a
#3: 1 New1 a
#4: 2 new2 b
#5: 2 new2 b
#6: 2 new2 b

或者我们可以不使用任何额外的包
dt[, Col2 := Col2[Col2!='blank'][1L] , .(Col1, Col3)]

关于r - R : Replace a column value with a value from same column after matching two other columns values 中的数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36446284/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com