R中的数据操作

时间:2013-07-11 06:34:28

标签: r data-manipulation

我有很多情侣(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中做到这一点吗?

2 个答案:

答案 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)