Как применить арифметические операции между идентичными значениями переменной, разделяемой между 2 наборами данных в R

#r #dataframe

#r #фрейм данных

Вопрос:

У меня есть 2 df, которые я хочу сравнить по их значениям их переменной «element» (оба имеют одинаковые значения, поскольку они получены из одного расплавленного df)

#фиктивный dfs

 X3500um_no_touch <- data.frame(element= c("1", "1", "2", "2", "3", "3" ), distance = c(4, 4, 8, 8, 7, 7), mean_raw = c(1794, 1794, 5794, 5794, 1754, 1754))

X3500um_touch <- data.frame(element= c("1", "1", "1", "2", "3", "3" ), distance = c(4, 4, 4, 8, 7, 7), mean_raw = c(1894, 1894, 1894, 4794, 754, 754))
  

Я ищу способ получить такой набор данных, но я не знаю, как поступить:

 #new_df
element distance mean_raw
1       4        100       # 1894 - 1794
2       8        -1000     # 4794 - 5794
3       7        -1000     # 754 - 1754
  

поскольку значения в элементе не совпадают, я не могу просто сделать

 new_df$element <- df2$element - df1$element
  

Любой простой способ сделать это? Спасибо!!

Ответ №1:

Предполагая, что в каждом фрейме данных есть элемент и расстояние, которые находятся в другом, и они упорядочены одинаково, но проблема заключается только в том, что есть дубликаты (что имеет место в вопросе), которые мы можем использовать unique в обоих фреймах данных, а затем вычесть:

 transform(unique(X3500um_no_touch), mean_raw = unique(X3500um_touch)$mean_raw - mean_raw)
##   element distance mean_raw
## 1       1        4      100
## 3       2        8    -1000
## 5       3        7    -1000