Вероятно, есть простое решение для этого, но я изо всех сил пытался получить это, и я не могу найти правильные условия поиска, чтобы найти ответ, поэтому я ценю любую помощь.
По сути, я заполняю новый фрейм данных, ища имя строк в другом фрейме данных2, и если это имя находится в фрейме данных2, то я хочу получить значение во втором столбце datagrame2 ... и если это не так, тогда я хочу добавить ноль.
Вот код, который у меня есть ... но это случайное получение значений, если имя находится в dataframe2.
UTR3s.totes.df <- UTR3s.df
for (i in 1:317) {
targets.df <- subset(TC_merge,V14==consmiRNAs[i])[,c(18,5)]
targets <- intersect(targets.df$ENSEMBL, UTR3s$Gene)
targets.df <- subset(targets.df, targets.df$ENSEMBL %in% targets)
sitenumber = data.frame(Gene = UTR3s$Gene)
UTR3s.totes.df[, paste("target",i,sep="")] <- ifelse(sitenumber$Gene %in%
targets.df$ENSEMBL, targets.df$V5, "0")
}
Все работает, кроме последней строки ... извлекает соответствующее значение из кадра данных2 (target.df)
Воспроизводимый пример добавлен:
U.df <- data.frame(name=c("name1","name2","name3","name4","name5"))
targets.df <- data.frame(name=c("name1","name3","name5"),value=c(2,1,3))
U.df[, paste("target",i,sep="")] <- ifelse(U.df$name %in% targets.df$name,
targets.df$value, "0")