Если вы правильно поняли, например, у вас есть ситуация, аналогичная той, что я показываю ниже, в соответствии с примером из функции merge
.
> (authors <- data.frame(
surname = I(c("Tukey", "Venables", "Tierney", "Ripley", "McNeil")),
nationality = c("US", "Australia", "US", "UK", "Australia"),
deceased = c("yes", rep("no", 3), "yes")))
surname nationality deceased
1 Tukey US yes
2 Venables Australia no
3 Tierney US no
4 Ripley UK no
5 McNeil Australia yes
> (books <- data.frame(
name = I(c("Tukey", "Venables", "Tierney",
"Ripley", "Ripley", "McNeil", "R Core")),
title = c("Exploratory Data Analysis",
"Modern Applied Statistics ...", "LISP-STAT",
"Spatial Statistics", "Stochastic Simulation",
"Interactive Data Analysis",
"An Introduction to R"),
deceased = c("yes", rep("no", 6))))
name title deceased
1 Tukey Exploratory Data Analysis yes
2 Venables Modern Applied Statistics ... no
3 Tierney LISP-STAT no
4 Ripley Spatial Statistics no
5 Ripley Stochastic Simulation no
6 McNeil Interactive Data Analysis no
7 R Core An Introduction to R no
> (m1 <- merge(authors, books, by.x = "surname", by.y = "name"))
surname nationality deceased.x title deceased.y
1 McNeil Australia yes Interactive Data Analysis no
2 Ripley UK no Spatial Statistics no
3 Ripley UK no Stochastic Simulation no
4 Tierney US no LISP-STAT no
5 Tukey US yes Exploratory Data Analysis yes
6 Venables Australia no Modern Applied Statistics ... no
Где authors
может представлять первый dataframe и books
ваш второй и deceased
может быть значение, которое в обоих dataframe, но только до настоящего времени в одном из них (authors
).
Самый простой способ включить только правильное значение deceased
- это просто исключить неверный из слияния.
> (m2 <- merge(authors, books[names(books) != "deceased"],
by.x = "surname", by.y = "name"))
surname nationality deceased title
1 McNeil Australia yes Interactive Data Analysis
2 Ripley UK no Spatial Statistics
3 Ripley UK no Stochastic Simulation
4 Tierney US no LISP-STAT
5 Tukey US yes Exploratory Data Analysis
6 Venables Australia no Modern Applied Statistics ...
Строка кода books[names(books) != "deceased"]
просто подмножества dataframe books
, чтобы удалить deceased
колонки, оставляя только правильный deceased
столбец из authors
в окончательном слиянии.
Добро пожаловать в R. Проверьте это высокопоставленное Q. http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example. Затем попробуйте указать данные входных данных, каков ваш желаемый результат. – user5249203
Это было бы хорошей задачей для 'coalesce' из пакета dplyr. – aosmith
'секс <- ifelse (! Is.na (sex.y), sex.y, sex.x)' – rawr