我在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
答案 0 :(得分:0)
假设您的数据作为数据框存储在名为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