Ich bin neu in R und lerne grundlegende Dinge. Ich habe einen Datenrahmen in R mit Spalten wie controller_id, user_id, mth_id, col_val1 bis col_val100.Berechnen und Speichern von Ergebnissen von Differenzen zwischen Zeilen in einem Datenrahmen basierend auf einem Spaltenwert in R
df <- data.frame('controller_id' = c('X','X','X','X','X','X','Y','Y','Y','Y','Y','Y','Z','Z'),
'user_id'=c('A','B','C','A','B','C','P','Q','R','P','Q','R',NA,NA),
'mth_id'=c('1393','1393','1393','1398','1398','1398','1393','1393','1393','1398','1398','1398','1393','1398'),
'col_val1' = c(5,4,6,3,1,10,12,15,18,13,19,1,5,2),
'col_val2'=c(8,12,9,2,12,5,7,9,11,4,0,7,10,5))
> df
controller_id user_id mth_id col_val1 col_val2
1 X A 1393 5 8
2 X B 1393 4 12
3 X C 1393 6 9
4 X A 1398 3 2
5 X B 1398 1 12
6 X C 1398 10 5
7 Y P 1393 12 7
8 Y Q 1393 15 9
9 Y R 1393 18 11
10 Y P 1398 13 4
11 Y Q 1398 19 0
12 Y R 1398 1 7
13 Z <NA> 1393 5 10
14 Z <NA> 1398 2 5
Was ich will, ist der Unterschied in der col_values für jeden Controller_ID spezifische user_id, mth_id und Anzeige auf der Grundlage dieser col_values nur zu berechnen, die zurückgegangen sind als die mth_id zugenommen hat.
Für zB: für controller_id = X haben wir 3 user_id als A, B, C für zwei verschiedene mth_ids. Code sollte für alle 3 users_id für mth_id 1398 und 1393 Unterschiede zwischen col_val1 berechnen und wenn die Differenz < 0, dann ist möchte ich eine Ausgabe wie
Col_val1 for controller_id 'X', user_id 'A' has decreased from 5 to 3
Wenn für ein Controller_ID gegeben kein User_id zugeordnet ist, dann sollte es berechnen die Spaltenwertdifferenz zwischen controller_id selbst.
Im Idealfall möchte ich diese Ausgabe in einer Liste/Datenframe für die spätere Verwendung speichern. Der Code soll auch für ca. 900 Spalten im Datenrahmen vorhanden.
Jede Hilfe würde sehr geschätzt werden.
@akrun Sie haben keine Vorschläge? –