0

我有很多对(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吗?

4

2 回答 2

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
于 2013-07-11T06:54:07.060 回答
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)
于 2013-07-11T06:44:09.820 回答