Я пытаюсь объединить два столбца, но данные объединяются из каждого столбца. Я хотел бы сохранить данные только из второго столбца B
и удалить все данные A
данные столбца. Есть ли способ сделать это без 1) удаления данных вручную из 1-го столбца? Благодарю вас!
df1 <- data.frame(A = c(1,1,1,1,1,1,1,1),
B = c(2,2,2,2,2,2,2,2))
df1 %>% unite("A",A,B,remove = TRUE,na.rm = TRUE)
Выход возвращает 1_2 в объединенном новом столбце «A»
Отредактировано с примером данных и выводом - спасибо
Может быть, лучше df1$A <- df1$B |> df1 = select(df1,-`B`)
Мне не очень понятно, что вы имеете в виду. В абзаце упоминаются столбцы Sales Rep
и REP:
, но ваши образцы данных — это A
и B
; ваш последний комментарий не является допустимым кодом R; в заголовке вопроса упоминается merge
, которая является операцией объединения таблиц, но вы предлагаете tidyr::unite
, которая представляет собой операцию вставки строк (ничего похожего). Все это может быть прояснено, если вы устраните двусмысленность имени столбца и добавите ожидаемый результат с учетом данных примера.
Извините, внесена правка абзаца. Я думаю, что лучше df1$A <- df1$B |> df1 = select(df1,-A
)
Вы хотите сохранить только столбец B, в котором присутствует значение, иначе используйте столбец A, как здесь? Итак, в итоге вы получите один столбец (С), который объединяет А и В?
Если вы хотите удалить столбец A, просто добавьте %>% select(-A)
.
library(tidyverse)
data.frame(
A = c(1, 1, 1, 1, 1, 1, 1, 1),
B = c(2, 2, 2, 2, 2, 2, NA, 2)
) %>%
mutate(C = coalesce(B, A))
#> A B C
#> 1 1 2 2
#> 2 1 2 2
#> 3 1 2 2
#> 4 1 2 2
#> 5 1 2 2
#> 6 1 2 2
#> 7 1 NA 1
#> 8 1 2 2
Created on 2022-05-17 by the reprex package (v2.0.1)
Я так думаю - объединение отдает приоритет первому проходу "B" в качестве приоритетных данных. Это означает, что какие-либо данные в A просто переопределяются данными B за вычетом NA? Спасибо!
Да. Первый аргумент имеет приоритет, а второй используется только в том случае, если в первом отсутствуют данные.
Спасибо - мне это тоже нравится, потому что похоже, что я могу передать несколько столбцов
Было бы полезно увидеть образцы данных, пожалуйста, опубликуйте вывод из
dput(head(test2))
.