У меня есть два data.frames разных размеров, и я ищу наиболее эффективный способ сопоставления строк из одного data.frame в другой и извлекать некоторую релевантную информацию.Строка, соответствующая data.frames разных размеров
Вот пример:
Две начальные data.frames, а и б, и желаемый результат:
a = data.frame(term = c("red", "salad", "rope", "ball", "tent", "plane", "gift", "meat"),
age = c(30, 24, 52, 44, 73, 44, 33, 12),
visits = c(5, 1, 3, 2, 8, 5, 19, 3))
b = data.frame(string = c("the red ball went over the fence",
"sorry to see that your tent fell down",
"the ball fell into the red salad",
"serious people eat peanuts on Sundays"))
desired_result = data.frame(string = b$string,
num_matches = c(2, 1, 3, 0),
avg_age = c(37, 73, 32.66667, NA),
avg_visits = c(3.5, 8, 2.66667, NA))
Вот data.frames в более читаемом формате:
> a
term age visits
1 red 30 5
2 salad 24 1
3 rope 52 3
4 ball 44 2
5 tent 73 8
6 plane 44 5
7 gift 33 19
8 meat 12 3
> b
string
1 the red ball went over the fence
2 sorry to see that your tent fell down
3 the ball fell into the red salad
4 serious people eat peanuts on Sundays
> desired_result
string num_matches avg_age avg_visits
1 the red ball went over the fence 2 37.00000 3.50000
2 sorry to see that your tent fell down 1 73.00000 8.00000
3 the ball fell into the red salad 3 32.66667 2.66667
4 serious people eat peanuts on Sundays 0 NA NA
- NUM_MATCHES это число "точки" в "строке"
- avg_age является средний возраст «терминов», найденных в «строке»
- avg_visits является среднее число посещений «условий», которая находится в «строке»
Любые идеи о том, как реализовать это в эффективный способ?
спасибо.
avg_age и avg_visits также может быть равен нулю, если совпадений не найдено – dreww2