首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >替换所有匹配项

替换所有匹配项
EN

Stack Overflow用户
提问于 2020-04-16 14:20:56
回答 2查看 45关注 0票数 1

我有一个下面的数据框

代码语言:javascript
运行
复制
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列中的所有3替换为y值,其中z值为3(在本例中为1)。

代码语言:javascript
运行
复制
table[, N := .N, rleid(y)]
table[, y := replace(y, N ==1, NA)]
table[N==1, y := zoo::na.locf(y)][, N := NULL]

我试过了,但是这个只替换了一次,并不是所有的.Any帮助都被感谢。

EN

回答 2

Stack Overflow用户

发布于 2020-04-17 04:58:26

我们可以从data.table使用fifelse

代码语言:javascript
运行
复制
library(data.table)
table[, y := fifelse(y == 3, y[z==3][1], y)]
票数 1
EN

Stack Overflow用户

发布于 2020-04-16 14:28:53

我们可以replace所有的y值,其中y为3,第一次出现y值,其中z为3。

代码语言:javascript
运行
复制
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)])]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61243889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档