2017-02-09 9 views
1

У меня есть dataframe, который выглядит следующим образом:Присвоить NAs к Дублям в каждой строке после первого вхождения

crop1 crop4  crop5  crop6 crop7 crop8   crop9 crop10  crop11 
1 Onion Rice Soya Beans Sugar Cane Onion  Tea Corn (Maize) Rice Soya Beans 
2 None None  None  None None None   None None  None 
3 None None  None  None None None   None None  None 
4 Accacia Rubber  Accacia  Rubber Accacia Rubber  Accacia Rubber  Accacia 
5 Accacia Rubber  Accacia  Rubber Accacia Rubber  Accacia Rubber  Accacia 
6 Rice Rice  Rice  Rice Rice Rice   Rice Rice  Rice 

Теперь я хотел бы назначить Nas на все повторяющиеся записи в каждой строке после того, как они впервые произошли. То есть, моя датафрейма должна иметь только уникальные записи в каждой строке, иначе NA. Например, в первом ряду, я хотел бы иметь:

1 Onion Rice Soya Beans Sugar Cane NA Tea Corn (Maize) NA NA 

Как «Лук», «Райс» и «соевые бобы» уже произошло в этом ряду. Следовательно, строка 4 должна выглядеть так:

4 Accacia Rubber NA NA NA NA NA NA NA 

Любые идеи по этому вопросу?

Спасибо!

Dataframe: http://pastebin.com/yKqhWyvW

ответ

1

Мы можем использовать duplicated, чтобы установить повторяющиеся элементы, как NA в каждой строке с помощью цикла по строкам с apply

df1[] <- t(apply(df1, 1, FUN = function(x) replace(x, duplicated(x), NA))) 

 Смежные вопросы

  • Нет связанных вопросов^_^