匹配2个不等长的日期列

har*_*aju 0 r date

我有以下数据样本

X <- c("11/12/2016", "12/12/2016", "13/12/2016","14/12/2016","15/12/2016","16/12/2016", "17/12/2016")
Y <- c("11/12/2016", "13/12/2016", "14/12/2016", "18/12/2016")
Run Code Online (Sandbox Code Playgroud)

我想要的输出是这样的

X                        Y
11/12/2016         11/12/2016     
12/12/2016             NA
13/12/2016         13/12/2016 
14/12/2016         14/12/2016 
15/12/2016             NA
16/12/2016             NA
17/12/2016             NA
Run Code Online (Sandbox Code Playgroud)

我尝试了以下代码,但没有得到所需的输出

> X <- as.Date(data$X)
> Y <- as.Date(data$Y)
> Z <- NA
> for (i in 1:length(X)) {
+ if(X[i] == Y){
+ Z <- Y}
+ else NA }
Run Code Online (Sandbox Code Playgroud)

Hen*_*rro 5

试试这个:

你的数据:

> X <- c("11/12/2016", "12/12/2016", "13/12/2016","14/12/2016","15/12/2016","16/12/2016", "17/12/2016")
> Y <- c("11/12/2016", "13/12/2016", "14/12/2016", "18/12/2016")
Run Code Online (Sandbox Code Playgroud)

创建NA的新矢量并进行匹配:

> Z<-rep(NA,length(X))
> Z[which(X %in% Y)]<-X[which(X %in% Y)]
> Z
[1] "11/12/2016" NA           "13/12/2016" "14/12/2016" NA           NA           NA 
Run Code Online (Sandbox Code Playgroud)

您的数据框:

> data.frame(X,Y=Z)
           X          Y
1 11/12/2016 11/12/2016
2 12/12/2016       <NA>
3 13/12/2016 13/12/2016
4 14/12/2016 14/12/2016
5 15/12/2016       <NA>
6 16/12/2016       <NA>
7 17/12/2016       <NA>
Run Code Online (Sandbox Code Playgroud)