我有两个样式相同的数据框,想将它们合并为具有相同列的数据框,同时还要合并其中一列。
两个数据框如下所示:
year variable
1 1968 2
2 1969 5
3 1970 <NA>
4 1971 <NA>
5 1972 <NA>
year variable
1 1968 <NA>
2 1969 <NA>
3 1970 5
4 1971 7
5 1972 <NA>
最后,我想得到一个看起来像这样的数据框:
year variable
1 1968 2
2 1969 5
3 1970 5
4 1971 7
5 1972 <NA>
谢谢!
答案 0 :(得分:1)
使用dplyr中的coalesce:
df1 <- bind_cols(year = seq(1968, 1972, 1),
variable = c(2, 5, NA, NA, NA))
df2 <- bind_cols(year = seq(1968, 1972, 1),
variable = c(NA, NA, 5, 7, NA))
left_join(df1, df2, by='year') %>%
mutate(
variable = coalesce(variable.x, variable.y)
) %>%
select(year, variable)
答案 1 :(得分:0)
您可以使用dplyr软件包,并删除NA。 首先,您需要转换为适当的NA
df1 <- data.frame(year = c(1968,1969,1970,1971,1972),
variable = c(2,5,'<NA>', '<NA>', '<NA>'))
df2 <- data.frame(year= c(1968,1969,1970,1971,1972),
variable = c('<NA>', '<NA>', 5, 7, '<NA>'))
library(dplyr)
df1 <- df1 %>%
mutate(variable = ifelse(variable == "<NA>", NA, variable))
df2 <- df2 %>%
mutate(variable = ifelse(variable == "<NA>", NA, variable))
df_m <- full_join(df1,df2) %>%
na.omit(variable)
您可以使用合并,但我更喜欢tidyverse。