Это первый раз, когда я задаю вопрос о стеке, но я часто его использую с тех пор, как начал кодировать много лет назад. Это всегда мне очень помогало.
У меня есть две таблицы со многими столбцами, которые определяют некоторые условия (одинаковое количество столбцов в двух таблицах), основными из которых являются «Компания» и «Цена». Моя основная идея состояла в том, чтобы объединить их, чтобы я мог иметь каждую характеристику каждой компании в столбцах и видеть, совпадают ли они с моей или нет. Поскольку они не всегда будут иметь одну и ту же цену, моя идея заключалась в том, чтобы использовать новый столбец с округленной ценой, чтобы их можно было объединить.
Я использовал функцию соединения или слияния в R на основе округленного столбца цены (вы увидите ниже). Но когда я объединяю его, независимо от того, с какой функцией он нарушает, строки и ближайшие ценовые точки не выровнены в столбцах, поэтому я не могу их сравнить ...
Company.ZZ Price.ZZ Price_round Company.XZ Price.XZ
1 ZZ 80 100 XZ 82
2 ZZ 80 100 XZ 93
3 ZZ 175 200 XZ 220
4 ZZ 175 200 XZ 240
5 ZZ 175 200 XZ 248
6 ZZ 243 200 XZ 220
7 ZZ 243 200 XZ 240
8 ZZ 243 200 XZ 248
9 ZZ 251 300 <NA> NA
10 ZZ 309 300 <NA> NA
11 ZZ 351 400 XZ 413
12 ZZ 351 400 XZ 439
13 ZZ 385 400 XZ 413
14 ZZ 385 400 XZ 439
15 ZZ 393 400 XZ 413
16 ZZ 393 400 XZ 439
17 ZZ 646 600 XZ 602
18 ZZ 646 600 XZ 625
19 ZZ 693 700 XZ 706
20 ZZ 706 700 XZ 706
21 ZZ 718 700 XZ 706
22 ZZ 854 900 <NA> NA
Идеальный результат, который я хотел бы получить, состоял бы в том, чтобы столбцы «Price.ZZ» и «Price.XZ» располагались в порядке возрастания. NB. Я пытался использовать для этого функции упорядочения или упорядочения, но они не работают в обоих столбцах, только один за другим.
Вот код, который я использовал, и файл представляет собой случайный файл, созданный в Excel с двумя столбцами, названием компании и некоторыми ценами.
library(plyr)
library(dplyr)
library(data.table)
table <- read.table( file.choose(), sep=";", header = TRUE)
data_ZZ <- subset(table, table$Company == "ZZ")
data_ZZ$Price_round <- round_any(data_ZZ$Price, 100)
data_ZZ <- setDT(data_ZZ)[order(Price_round, Price)]
colnames(data_ZZ) <- c("Company.ZZ", "Price.ZZ", "Price_round")
data_YZ <- subset(table, table$Company == "YZ")
data_YZ$Price_round <- round_any(data_YZ$Price, 100)
data_YZ <- setDT(data_YZ)[order(Price_round, Price)]
colnames(data_YZ) <- c("Company.YZ", "Price.YZ", "Price_round")
data_XZ <- subset(table, table$Company == "XZ")
data_XZ$Price_round <- round_any(data_XZ$Price, 100)
data_XZ <- arrange(data_XZ, Price)
colnames(data_XZ) <- c("Company.XZ", "Price.XZ", "Price_round")
left_join(data_ZZ, data_XZ)
Я пытаюсь найти решение в течение двух дней ... Я надеюсь, что я был ясен, потому что это трудно описать точно, но я отвечу на каждый вопрос :).
Большое спасибо.
Готье