Как я могу создать новый столбец из двух столбцов, исключая его части?

#r #dplyr #statistics #tidyr

#r #dplyr #Статистика #tidyr

Вопрос:

Нажмите здесь, чтобы увидеть изображение

Прошу прощения за действительно расплывчатый заголовок, но я хочу знать, как я мог бы создать новый столбец из двух столбцов, показанных на изображении, таким образом, чтобы «NR» был исключен из нового столбца.

Например, первая строка нового столбца будет «без дохода», а 7-я строка будет «Между 5001 и 10 тыс.». «NR» не будет присутствовать в новом столбце.

Я был бы очень признателен за вашу помощь. Спасибо.

Комментарии:

1. каким должен быть результат, если оба столбца ‘NR’? а что, если ни один из двух не является ‘NR’?

2. На самом деле я об этом не думал. Но в моем случае никакие два столбца не содержат «NR» одновременно. Тот же ответ на ваш второй вопрос, я убедился, что мы не сталкиваемся с такими сценариями. Спасибо.

Ответ №1:

В будущем было бы здорово, если бы вы предоставили пример данных, используя dput , а не скриншот.

Предполагая, что «NR» всегда отображается ровно в одном столбце, вы могли бы просто сделать это, чтобы создать столбец с именем new_col :

 df$new_col <- ifelse(df$new2 != "NR", df$new2, df$new10)
 

Ответ №2:

Я бы заменил NR пустыми строками, а затем вставил все столбцы вместе:

 df %>% mutate(across(c(new2, new10), ~if_else(.x=="NR", "", .x))) %>%
   unite(Column, c(new2, new10), sep="")
 

Замените df на имя вашего data.frame .

Ответ №3:

Мы могли бы использовать coalesce после изменения ‘NR’ на NA

 library(dplyr)
df1 %>%
    mutate(across(c(new2, new10), na_if, "NR")) %>%
    transmute(new_col = coalesce(new2, new10))