我有一个数据集,我需要根据另一列更改一列中的值零和零值。
例如:
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")
欢迎任何帮助。谢谢。
答案 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)