Заменить первые дублированные данные в ряду данных на NA - PullRequest
3 голосов
/ 17 июня 2019

Я считаю, что строки в моем фрейме данных «Данные» часто имеют 1-й элемент, равный 2-му элементу.Я хочу заменить этот 1-й элемент, который дублируется с NA, и сохранить 2-й элемент.

Мой фрейм данных «Данные» с 3 столбцами c1, c2 и c3, подобный этому

c1 c2 c3
1  1  4
5  2  9
3  1  8
7  7  2
9  9  1

Я пытался запустить этот код

for (i in 1:length(Data)) {
Data[i,1]<- if (Data[i,1]==Data[i,2]) NA else Data[i,1]
}

, но это не такРабота.Я хотел бы использовать Data [i; 1] вместо Data $ c1 [i], потому что я использую циклы merge () для воссоздания моего информационного кадра, и имя столбцов меняется каждый раз, когда создается информационный кадр.
Я хочузаменить любое значение в столбце c1, которое дублируется в той же строке столбца c2, на NA, например:

c1 c2 c3
NA 1  4
5  2  9
3  1  8
NA 7  2
NA 9  1

Не могли бы вы мне помочь, пожалуйста?Большое вам спасибо.

Ответы [ 2 ]

5 голосов
/ 17 июня 2019

Вы можете сделать это:


df[df$c1 == df$c2, 1] <- NA

 c1 c2 c3
1 NA  1  4
2  5  2  9
3  3  1  8
4 NA  7  2
5 NA  9  1

2 голосов
/ 17 июня 2019

С dplyr:

df %>% 
   mutate(c1=ifelse(c1==c2,NA,c1))
  c1 c2 c3
1 NA  1  4
2  5  2  9
3  3  1  8
4 NA  7  2
5 NA  9  1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...