Я работаю с двумя dataframes в R:Сравнить значения из двух dataframes и слияния
df1 = data.frame(c("A", "B"), c(1, 21), c(17, 29))
colnames(df1) = c("location", "start", "stop")
df1
location start stop
A 1 17
B 21 29
df2 = data.frame(c("A", "A", "A", "A", "B"), c(1, 10, 20, 40, 20), c(10, 20, 30, 50, 30), c("x1", "x2","x4", "x5", "x3"))
colnames(df2) = c("location", "start", "stop", "out")
df2
location start stop out
A 1 10 x1
A 10 20 x2
A 20 30 x4
A 40 50 x5
B 20 30 x3
Теперь я хочу, чтобы проверить для каждой строки df1:
- есть матч между " location 'с' location 'от df2
- , если значение «start» находится в диапазоне начала и остановки от df2 или если значение «end» находится в диапазоне начала и остановки от df2, out "из df2 следует вставить в новый столбец в df1
Это, как результат будет выглядеть в случае данного примера
df1_new
location start stop out
A 1 17 x1,x2
B 21 29 x3
Я начал в R, но я застрял в точке, где мне нужно, чтобы посмотреть в полный dataframe из df2
for (i in nrow(df1)) {
if(df1$location[i] == df2$location # it needs to look for a match in the complete dataframe of df2. I don't know how to do this
& if (df1$start[i] %in% # it needs to check if the start value lies in the range between df2$start & df2$end
}
Ваша правка очень неполно, вы добавили строки в распечатке , но не для кода, делающего это. Вы также пренебрегли обновлением вывода. – Frank
@Frank: Я забыл изменить код, это сделано сейчас. Выход остается тем же – user1987607
Простите, нет, ваш вход теперь содержит ошибку с кавычками. Попробуйте запустить свой код, прежде чем публиковать его. – Frank