#r
Вопрос:
У меня есть фрейм данных, и в строке они дублируются, имеют тройное или большее значение. Я хочу сохранить первое значение и перекодировать как Na или -2 остаток элемента, но у меня есть некоторые проблемы. Вы не могли бы мне помочь?
Я пытаюсь использовать этот код r:
N
кольн
для (i в 1:N) {
для (j в coln) {
va <- which(table(dfriend[i, coln])>1)
if (length(va)>0){
data[i, j] <- -2
}
else {
if (is.na(data[i, j]) {
data[i, j] <- -3
}
}
}
}
Комментарии:
1. пожалуйста, предоставьте свои данные в виде кода, а не изображений или ссылок
2. вы можете использовать dput()
Ответ №1:
Мы могли бы использовать duplicated
(предполагая, что это по столбцам)
dfriend[coln] <- lapply(dfriend[coln], function(x) {
i1 <- is.na(x)
i2 <- duplicated(x)
x[i2] <- -2
x[i1] <- -3
x})
если мы хотим проверить заменить строкой, используйте apply
dfriend[coln] <- t(apply(dfriend[coln], 1, function(x) {
i1 <- is.na(x)
i2 <- duplicated(x)
x[i2] <- -2
x[i1] <- -3
x}))