R 替换所有事件
我有一个下面的数据框R 替换所有事件,r,dplyr,data.table,R,Dplyr,Data.table,我有一个下面的数据框 x=c(1:21) y=c(rep(0,2),rep(3,7),rep(1,12)) z=c(rep(1,17),rep(3,4)) table=data.table(x,y,z) 在这里,我需要用y的值替换y列中的所有3,其中z值为3(在本例中为1) 我试过了,但这一次只替换了一次,而不是全部。非常感谢您的帮助。我们可以替换所有y值,其中y为3,第一次出现y值,其中z为3 library(data.table) table[, y := replace(y, y ==
x=c(1:21)
y=c(rep(0,2),rep(3,7),rep(1,12))
z=c(rep(1,17),rep(3,4))
table=data.table(x,y,z)
在这里,我需要用y的值替换y列中的所有3,其中z值为3(在本例中为1)
我试过了,但这一次只替换了一次,而不是全部。非常感谢您的帮助。我们可以
替换所有y
值,其中y
为3,第一次出现y
值,其中z
为3
library(data.table)
table[, y := replace(y, y == 3, y[z==3][1])]
#Or similarly,
#table[, y := replace(y, y == 3, y[which.max(z==3)])]
我们可以使用data.table中的fifelse
library(data.table)
table[, y := fifelse(y == 3, y[z==3][1], y)]
在本例中,z
的最后4个值为3。顺便说一句,所有对应的y
值在这里都是1,但是如果y
值不相同,那么最后4个值不是1、2、3和4呢?你会取哪个值?可能类似于DT[y==3L,y:=DT[z==3L,y[1L]]]
(使用DT
而不是table
,因为后者是一个非常有用的函数)?此外,还有许多可能的场景未在OP中解决。
library(data.table)
table[, y := fifelse(y == 3, y[z==3][1], y)]