我是R的新手所以如果我没有使用正确的词汇,请原谅我。我目前正在处理一个数据集,其中有一些虚拟变量。问题是对于某些行,多于1个虚拟变量的值为1.如果是这种情况,我想将下一个虚拟变量设置为NA。
我想尝试一些但我不知道如何开始。如果有人可以帮助我,那将是惊人的。
提前致谢!
df <- structure(list(Dum_1 = c(1L, NA, NA), Dum_2 = c(NA, 1L, NA),
Dum_3 = c(NA, 1L, 1L)), row.names = c(NA, -3L), class = c("tbl_df",
"tbl", "data.frame"))
# A tibble: 3 x 3
Dum_1 Dum_2 Dum_3
<int> <int> <int>
1 1 NA NA
2 NA 1 1
3 NA NA 1
# A tibble: 3 x 3
Dum_1 Dum_2 Dum_3
<int> <int> <int>
1 1 NA NA
2 NA 1 NA
3 NA NA 1
假设您的数据作为数据帧存储在名为df
的对象中,这应该有效:
df2 <- apply(df,1,function(x) {
first_one <- min(which(x == 1))
x[1:length(x)] <- NA
x[first_one] <- 1
print(x)
})
df2
这假设df
看起来像这样:
df <- tibble::tribble(
~`Dum 1`, ~`Dum 2`, ~`Dum 3`,
1, NA, NA,
NA, 1, 1,
NA, NA, 1
) %>% as.data.frame()
df
Dum 1 Dum 2 Dum 3
1 1 NA NA
2 NA 1 1
3 NA NA 1