我有很多情侣(x, y)
,其中x
是一个数字,y
是二元指标。
我想为每对(x, 0)
的x组件添加0.1,以便存在一对(x, 1)
。
例如
x y
1 0
2 0
2 0
3 0
3 1
4 1
会变成
x y
1 0
2 0
2 0
3.1 0
3 1
4 1
你能帮助我在R
中做到这一点吗?
答案 0 :(得分:1)
library(data.table)
# Create your sample data:
df<-data.frame(x=c(1,2,2,3,3,4), y=c(0,0,0,0,1,1))
# Convert data.frame to data.table:
dt<-data.table(df,key="x,y")
# Get x values where y==1, create a secondary table of (x, 0),
# join it to the original table and then update x
dt[dt[y==1,list(x,y=0)],x:=x+0.1]
dt
# x y
# 1: 1.0 0
# 2: 2.0 0
# 3: 2.0 0
# 4: 3.1 0
# 5: 3.0 1
# 6: 4.0 1
答案 1 :(得分:0)
df <- data.frame(x = c(1,2,2,3,3,4), y = c(0,0,0,0,1,1))
within(df, x[y==0][x[y==0] %in% x[y==1]] <- x[y==0][x[y==0] %in% x[y==1]]+.1)