merge() may be useful here:
> merge(OriginalData[1:3], TargetValue, by.x="AA1", by.y="AA",
sort=FALSE)[-1]
Value1 Value2 BB Value
1 1 11 B 7
2 3 13 B 7
3 11 21 B 7
4 2 12 B25
5 12 22 B25
6 9 19 B25
7 10
Like this? (use indexing to avoid explicit loops whenever possible):
## first convert factor columns to character, as David W. suggested
i <- sapply(od,is.factor)
od[i]<- lapply(od[i],as.character)
i <- sapply(tv, is.factor)
tv[i]<- lapply(tv[i],as.character)
## Now use ?match
wh <- match(od
> On May 20, 2017, at 11:23 AM, Christofer Bogaso
> wrote:
>
> Hi again,
>
> Let say I have below 2 data frames.
>
> OriginalData = data.frame('Value1' = 1:12, 'Value2' = 11:22, 'AA1' =
> c('AA4', 'AA3', 'AA4', 'AA1', 'AA2', 'AA1', 'AA6', 'AA6', 'AA3',
> 'AA3', 'AA4', 'AA3'), 'Value' = NA)
>
Hi again,
Let say I have below 2 data frames.
OriginalData = data.frame('Value1' = 1:12, 'Value2' = 11:22, 'AA1' =
c('AA4', 'AA3', 'AA4', 'AA1', 'AA2', 'AA1', 'AA6', 'AA6', 'AA3',
'AA3', 'AA4', 'AA3'), 'Value' = NA)
TargetValue = data.frame('AA' = c('AA1', 'AA2', 'AA3', 'AA4', 'AA5',
'AA6'), 'BB
4 matches
Mail list logo