Мне нужно изменить некоторые значения в моем кадре данных, повторяя по строкам. Для каждой строки, если в одном столбце есть 1, мне нужно изменить 0 значений в других столбцах на NA.
У меня есть код, который работает, но работает очень медленно при использовании большего набора данных.
data = data.frame(id=c("A","B","C"),V1=c(1,0,0),V2=c(0,0,0),V3=c(1,0,1))
cols = names(data)[2:4]
for (i in 1:nrow(data)){
if(any(data[i,cols]==1)){
data[i,cols][data[i,cols]==0]=NA
}
}
У меня есть пример набора данных
data
id V1 V2 V3
1 A 1 0 1
2 B 0 0 0
3 C 0 0 1
и ожидаемый (и фактический) результат
data
id V1 V2 V3
1 A 1 NA 1
2 B 0 0 0
3 C NA NA 1
Как я могу написать это более оптимальным образом?