将数据替换为数据框中的另一列数据,同时将先前实例< 0替换为0

时间:2013-12-31 16:19:47

标签: r

我有一个数据框

x<-c(1,3,0,2,4,5,0,-2,-5,1,0)
y<-c(-1,-2,0,3,4,5,1,8,1,0,2)

data.frame(x,y)
    x  y
1   1 -1
2   3 -2
3   0  0
4   2  3
5   4  4
6   5  5
7   0  1
8  -2  8
9  -5  1
10  1  0
11  0  2

我想将第y列中的数据替换为第x列中的数据,并在y中替换y中的&lt; 0并将其替换为0的实例。这将导致以下数据框

data.frame(x,y)
    x  y
1   1  0
2   3  0
3   0  0
4   2  2
5   4  4
6   5  5
7   0  0
8  -2 -2
9  -5 -5
10  1  0
11  0  0

谢谢

3 个答案:

答案 0 :(得分:2)

x<-c(1,3,0,2,4,5,0,-2,-5,1,0)
y<-c(-1,-2,0,3,4,5,1,8,1,0,2)
df <- data.frame(x, y)
df$y <- ifelse(y<0,0,x)
df
#     x  y
# 1   1  0
# 2   3  0
# 3   0  0
# 4   2  2
# 5   4  4
# 6   5  5
# 7   0  0
# 8  -2 -2
# 9  -5 -5
# 10  1  1
# 11  0  0

答案 1 :(得分:1)

根据您的xy向量,快速创建data.frame

> data.frame(x, y=ifelse(y < 0, 0, x))
    x  y
1   1  0
2   3  0
3   0  0
4   2  2
5   4  4
6   5  5
7   0  0
8  -2 -2
9  -5 -5
10  1  1
11  0  0

答案 2 :(得分:1)

在一行中:

> df <- transform(data.frame(x,y), y = ifelse(y<0,0,x))
> df
    x  y
1   1  0
2   3  0
3   0  0
4   2  2
5   4  4
6   5  5
7   0  0
8  -2 -2
9  -5 -5
10  1  1
11  0  0

请注意,结果数据与您在记录10中提供的参考结果不同。我怀疑这可能是因为您应用了条件&lt; = 0而不是&lt; 0?否则,1将从x字段传送到该记录。