我有很多对(x, y)
,有x
一个数字和y
一个二进制指示符。
我想为每对夫妇的 x 分量添加 0.1 ,(x, 0)
这样就存在一对(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
吗?
我有很多对(x, y)
,有x
一个数字和y
一个二进制指示符。
我想为每对夫妇的 x 分量添加 0.1 ,(x, 0)
这样就存在一对(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
吗?
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
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)