我有两个不同的数据集,A和B,它们的长度不同,我需要从B到A的末尾添加一列,如果日期匹配。下面是数据组B的样子:for循环来匹配列
Variable_1 Variable_2 Date Variable_3
v1 v2 10/12/2014 0
v1a v2a 10/11/2014 18
v1b v2b 10/10/2014 15
v1c v2c 10/08/2014 0
v1d v2d 10/09/2014 0
v1e v2e 10/01/2014 0
答:
Date Variable_4 Variable_5 Variable_0
10/11/2014 v4 v5 N
10/12/2014 v4a v5a N
10/08/2014 v4b v5b N
10/09/2014 v4c v5c N
10/25/2014 v4d v5d N
10/31/2014 v4e v5e N
所以我需要一个循环,如果说在日期中的A相同B日期再加入variable_3的为DataSet A.
所以循环结束后,它应该看起来像:
Date Variable_4 Variable_5 Variable_0
10/11/2014 v4 v5 18
10/12/2014 v4a v5a 0
10/08/2014 v4b v5b 0
10/09/2014 v4c v5c 0
10/25/2014 v4d v5d N
10/31/2014 v4e v5e N
目前我有这个循环,但它似乎没有要工作?
lgthWeather <- length(Park$PRCP)
lgthData <- length(Data$Date)
count <- 0
#### broken loop ###
for(i in 1:lgthWeather)
{
for(j in 1:lgthData)
{
if(Data$Date[j] == Park$Date[i])
{
Data$Precip[j] <- Park$PRCP[i]
j <- j + 1
}
if(Data$Date[j] != Park$PRCP[i])
{
j <- j + 1
}
}
i <- i + 1
}
任何意见将不胜感激。
解决方案下图:
merge(A, B[,c("Date","Variable_3")], by="Date", all.x=TRUE)
Date Variable_4 Variable_5 Variable_0 Variable_3
1 10/08/2014 v4b v5b N 0
2 10/09/2014 v4c v5c N 0
3 10/11/2014 v4 v5 N 18
4 10/12/2014 v4a v5a N 0
5 10/25/2014 v4d v5d N NA
6 10/31/2014 v4e v5e N NA
或者你可以使用'left_join(A,B [C( “日期”, “variable_3的”)],通过= '日期')'从'库(dplyr)' – akrun 2014-10-09 16:10:52
代替添加“解决'你的头衔,为什么你不接受提供的答案之一? – 2014-10-09 16:50:06