У меня есть два фрейма данных df1 (4x4) и df2 (4x1).В каждой первой переменной (т. Е. Original_items и Reordered) является строка.В df1 V2: V4 являются числовыми.Вы можете видеть, что в df1 и df2 данные в первой переменной расположены в другом порядке.Мне нужно сделать следующее.
Возьмите 1-й элемент переменной df2 'Reordered' (т. Е. Наслаждайтесь праздниками.), Затем найдите элементы переменной df1 'Original_items', чтобы найти точное совпадение.
Когда совпадение найдено, мне нужно взять всю строку данных, связанных с соответствующим элементом, в df1 'Original_items' (т. Е. "Наслаждайтесь праздниками.", 4,1,3) и добавить его рядом стот же элемент переменной df2 'Reordered' (т. е. "Наслаждайтесь праздниками").Мне нужен этот вывод в новом фрейме данных, названном df_desired, который должен быть: «Наслаждайся праздниками», «Наслаждайся праздниками», 4, 1, 3.Пожалуйста, смотрите ниже иллюстрацию этого примера.
Когда это будет сделано, я бы хотел повторить этот процесс для каждого элемента переменной df2 'Reordered', поэтому окончательный результат выглядит как таблица df_desired ниже.
Контекст проблемы.У меня есть около 2000 элементов и 1000 точек данных, связанных с каждым элементом.Поскольку мне нужно сопоставлять элементы и добавлять данные заранее определенным способом, я пытаюсь найти эффективное решение.
РЕДАКТИРОВАТЬ Было предложено просто переименовать элементы в «Оригинал».Переменная».Хотя это и правда, неудобно делать для фрейма данных более 2000 элементов.
Также было упомянуто, что этот вопрос может быть связан только со слиянием.Я считаю, что объединение необходимо здесь только для элементов, которые были идентифицированы как идентичные в df1 и df2.Следовательно, есть два ключевых вопроса: 1) как сопоставить строковые переменные в данном конкретном случае?2) как объединить / добавить строки условно, т.е. если они были сопоставлены.Спасибо за ваш вклад, и я был бы признателен за вашу помощь, пожалуйста
Я упомяну, что я пытался и выяснил до сих пор.Я понял,
df1[,1] == df2 [,1] # gives me true or false if rows in column 1 are the
same in both data frames. I tried to set up a double loop, but unsuccessfully
for (i in 1:nrow(df1)) {
for (j in 1:nrow(df2)){
if (i==j){
c <- merge(a,b)
} else
print("no result")
}
}
Я чувствую, что в цикле я не могу указать, что я работаю только со значениями строки из одной переменной "Original_item" в df1
# df1 (4x4 matrix)
Original_items V2 V3 V4
Love birds. 1 5 3
Eat a lot of food. 2 5 5
Love birthdays. 2 2 4
Enjoy holidays. 4 1 3
# df2 (4x1 matrix)
Reordered
Enjoy holidays.
Eat a lot of food.
Love birds.
Love birthdays.
# df_desired (4x5 matrix)
Reordered Original_items V2 V3 V4
Enjoy holidays. Enjoy holidays. 4 1 3
Eat a lot of food. Eat a lot of food. 2 5 5
Love birds. Love birds. 1 5 3
Love birthdays. Love birthdays. 2 2 4