Ich bin ziemlich neu in R und dies ist das erste Mal, dass ich es wage, hier eine Frage zu stellen.R Summe der Zeilen für verschiedene Gruppe von Spalten, die mit ähnlichen Zeichenfolge beginnen
Ich arbeite mit einem Datensatz mit likert Skalen und ich möchte Summe über verschiedene Gruppe von Spalten, die die ersten Zeichenfolgen in ihrem Namen teilen.
Unten habe ich einen Datenrahmen von nur 2 Zeilen erstellt, um den Ansatz zu illustrieren, den ich verfolgt habe, obwohl ich gerne Feedback darüber bekommen würde, wie ich einen effizienteren Weg dazu schreiben kann.
df <- as.data.frame(rbind(rep(sample(1:5),4),rep(sample(1:5),4)))
var.names <- c("emp_1","emp_2","emp_3","emp_4","sat_1","sat_2"
,"sat_3","res_1","res_2","res_3","res_4","com_1",
"com_2","com_3","com_4","com_5","cap_1","cap_2",
"cap_3","cap_4")
names(df) <- var.names
Also, was ich tat, war die grep-Funktion zu verwenden, um der Lage sein, die Zeilen der angegebenen Variablen zu summieren, die mit bestimmten Zeichenfolgen und speichern sie in einer neuen Variablen gestartet. Aber ich muss für jede Variable eine neue Codezeile schreiben.
df$emp_t <- rowSums(df[, grep("\\bemp.", names(df))])
df$sat_t <- rowSums(df[, grep("\\bsat.", names(df))])
df$res_t <- rowSums(df[, grep("\\bres.", names(df))])
df$com_t <- rowSums(df[, grep("\\bcom.", names(df))])
df$cap_t <- rowSums(df[, grep("\\bcap.", names(df))])
Aber es gibt viel mehr Variablen im Datensatz, und ich möchte wissen, ob es einen Weg gibt, diese von Code mit nur einer Zeile zu tun. Zum Beispiel eine Möglichkeit, die Variablen, die mit den gleichen Strings beginnen, zu gruppieren und dann die Zeilenfunktion anzuwenden.
Vielen Dank im Voraus!
Nun, wenn das eine Operation ist, die Sie oft tun müssen, klingt es wie Ihre Daten in der falschen Form sind. Es wäre einfacher, mit Daten im "langen" Format als mit dem "Weit" -Format zu arbeiten, das Sie derzeit haben. Es gibt viele andere Fragen zum Umformen, wenn das etwas ist, das du machen willst. – MrFlick