Вы можете попробовать приведенный ниже базовый код R, используя merge
DF1$Value <- do.call(`*`,merge(DF1[c("Name","Value")],DF2,all = TRUE,by="Name")[-1])
, такой что
> DF1
Data1 Data2 Name Value
1 aa bb sample1 50
2 ff ff sample1 100
3 ef fd sample1 75
4 ff df sample2 50
5 bbf ad3 sample2 100
6 dd a sample2 150
7 33 3rf sample3 50
8 ddd dd sample3 100
9 dd dd sample3 80
DATA
DF1 <- structure(list(Data1 = c("aa", "ff", "ef", "ff", "bbf", "dd",
"33", "ddd", "dd"), Data2 = c("bb", "ff", "fd", "df", "ad3",
"a", "3rf", "dd", "dd"), Name = c("sample1", "sample1", "sample1",
"sample2", "sample2", "sample2", "sample3", "sample3", "sample3"
), Value = c(50L, 100L, 75L, 100L, 200L, 300L, 25L, 50L, 40L)), class = "data.frame", row.names = c(NA,
-9L))
DF2 <- structure(list(Name = c("sample1", "sample2", "sample3"), Value = c(1,
0.5, 2)), class = "data.frame", row.names = c(NA, -3L))