有条件地将零替换为一,将一替换为零

时间:2021-02-18 15:10:42

标签: r conditional-statements

我有一个数据集,我需要根据另一列更改一列中的值零和零值。

例如:

structure(list(id = c(2007, 2007, 2007, 2008, 2008, 2008, 2009, 
2009, 2009, 2010, 2010), var = c(0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 
0)), class = "data.frame", row.names = c(NA, -11L))

仅对 2008 和 2010 进行更改:

structure(list(id = c(2007, 2007, 2007, 2008, 2008, 2008, 2009, 
2009, 2009, 2010, 2010), var = c(0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 
1)), row.names = c(NA, -11L), class = "data.frame")

欢迎任何帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

如果 x 是二进制的(1 和 0),那么 1 - x 会切换 1 和 0。所以我们使用 1 - x 表示您要更改的行:

rows = df$id %in% c(2008, 2010)
df$var[rows] = 1 - df$var[rows]
df
#      id var
# 1  2007   0
# 2  2007   1
# 3  2007   0
# 4  2008   1
# 5  2008   0
# 6  2008   0
# 7  2009   1
# 8  2009   0
# 9  2009   1
# 10 2010   1
# 11 2010   1

答案 1 :(得分:0)

可能有点小技巧,但只需取绝对值 var 减去 1

a <- structure(list(id = c(2007, 2007, 2007, 2008, 2008, 2008, 2009, 
2009, 2009, 2010, 2010), var = c(0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 
0)), class = "data.frame", row.names = c(NA, -11L))

a$var <- abs(a$var-1)