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