Как изменить все числа, большие 0 во фрейме данных, на символ «присутствует»?

#r #dataframe

#r #фрейм данных

Вопрос:

У меня просто есть простой вопрос, который я пытался решить с помощью mutate, но не очень успешно. У меня есть фрейм данных с 2 строками и множеством столбцов, которые имеют числовые значения от 0 до 1000. Я просто хочу изменить ненулевые числа в каждом столбце на слово «присутствует» и заменить те, у которых 0, на слово «отсутствует».

Мой образец фрейма данных приведен ниже

Кошка Собака
5 0
0 5

который я хочу обратить к следующему

Кошка Собака
Подарок Отсутствует
Отсутствует Подарок

Спасибо!

Ответ №1:

Мы можем создать логическую матрицу, преобразовать в числовой индекс, заменить вектором значений на основе индекса позиции и назначить обратно исходному набору данных

 df1[] lt;- c("Absent", "Present")[1   (df1 gt; 0)]  

-выход

 gt; df1  Cat Dog 1 Present Absent 2 Absent Present  

данные

 df1 lt;- structure(list(Cat = c(5L, 0L), Dog = c(0L, 5L)),  class = "data.frame", row.names = c(NA,  -2L))  

Ответ №2:

Можно было бы использовать ifelse заявление:

 df1 lt;- structure(list(Cat = c(5L, 0L), Dog = c(0L, 5L)),   class = "data.frame", row.names = c(NA, -2L))  df2 lt;- ifelse(df1 == 0, "Absent","Present") # or df3 lt;- ifelse(df1 gt; 0, "Present", "Absent")