#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")