Я начинаю с R, и я хочу объединить два набора данных вместе на основе столбца ID. Если идентификатор ID набора данных существует в наборе данных 1, то я хочу, чтобы данные для этой конкретной строки из набора данных 2 были добавлены в строку в наборе данных 1.Объединить данные в r на основе условий и создать новый столбец
Во-вторых, если есть совпадение, я хочу поставить «1» в новом столбце под названием match для этой конкретной строки/соответствия и «0», если не было соответствия.
Пример:
Dataset 1:
Id category
123 3
124 1
125 2
Dataset 2:
Id score category
123 0.24 3
124 0.83 1
126 0.92 2
Заключительный пример с добавленным колонки:
Id score category match
123 0.24 3 1
124 0.83 1 1
125 NA 1 0
126 0.92 2 1
Я попытался это до сих пор (и некоторые другие комбинации), но это не дает мне хорошие результаты:
data <- merge(df1, df2, by ="ID" , all.x = TRUE)
Я бы очень признателен за любую помощь!
Возпроизводимо код:
df1 <- data.frame(ID=c("123","124","125"), category=c(3,1,2)
df2 <- data.frame(ID=c("123","124","126"), score=("0.24","0.83","0.92"), category=c("3","1","2")
У вас есть 'character' NA? Он не должен помещаться в кавычки. Входные данные показали, и пример «df2» в воспроизводимом примере не соответствует. Чтобы создать двоичный столбец, просто используйте '% in%' с 'as.integer' – akrun
данные вашего примера с ожидаемым выводом, а воспроизводимый код не одинаковый. У вас нет идентификатора '126'? – user5249203
Возможный дубликат [Как объединить кадры данных (внутренний, внешний, левый, правый)?] (Http://stackoverflow.com/questions/1299871/how-to-join-merge-data-frames-inner -outer-left-right) –