У меня есть вопрос, который чем-то похож на этот, но это решение не сработало для меня: Функция MATCH в r
У меня есть два фрейма данных, которые выглядят так:
df1
query page
apple site.com
apple site.com/apples
banana site.com/bananas
bad apples site.com/apples'
df2
page sessions
site.com 20
site.com/apples 30
site.com/bananas 50'
Мне нужен новый столбец в df1, который показывает сессии. Когда я пытался использовать match () в приведенном выше обсуждении, весь столбец возвращался как «NA». Это был мой код:
df1$sessions <- df2$sessions[match(df1$page, df2$page)]
Я также попытался объединить:
df_merged = merge(df1, df2, by="page", all.x = TRUE)
Кажется, что здесь имеет смысл левое объединение, возможно, с использованием sqldf + function (), но я не могу сформулировать это правильно, и я не совсем уверен, нужна ли даже функция или если sqldf может сделать это на свой. Было бы хорошо показать «NA» в df1 везде, где нет совпадения, но я получаю «NA», даже когда должно быть совпадение. Я пробовал это, но безрезультатно:
df_merged <- left_join(df1, df2 by='page')