2016-11-21 4 views
-4

Ich habe die folgenden Daten, die ich in die gewünschten Ausgänge (gewünschte Ausgabe 1 und 2) in R umformen möchte, wobei ich Variablennamen in die hinzugefügte Spalte basierend auf ursprünglichen Werten von analysieren muss mehrere Spalten in Eingabedaten.Umformen von Daten in R mit Spaltennamen

Beigefügt ist der Screenshot.

Schätzen Sie für jede Hilfe.

data from input to desired outputs

+0

Versuchen 'cbidn (df1 [1], OUTPUT = gelten (df1 [-1], Funktion (x) toString (x [x = 0]))) ' – akrun

+0

@akrun, ich bin mir nicht sicher, was Sie hier vorhatten. Ich kann Ihren Code nicht zur Arbeit bringen. Es ist mir nicht klar, ob du 'lapply' oder' apply' meinst (wenn 'apply', fehlt das 'MARGIN'-Argument), und ich kann die gewünschte Ausgabe mit keiner offensichtlichen Permutation dieser Optionen erhalten. (Sie schreiben auch "cbind" falsch) – Benjamin

+0

Ich habe da einige Tippfehler und Sie haben Recht. Ich meinte 'cbind (DF [1], OUTPUT = anwenden (DF [-1], 1, FUN = Funktion (x) toString (Namen (x) [x! = 0]))) ' – akrun

Antwort

3

Mit dplyr und tidyr:

DF <- data.frame(ID = 1:3, 
       A = c(0, 1, 1), 
       B = c(1, 0, 0), 
       C = c(0, 0, 0), 
       D = c(1, 0, 1), 
       E = c(0, 1, 0)) 
library(dplyr) 
library(tidyr) 

out1 <- 
    gather(DF, letter, bit, A:E) %>% 
    filter(bit == 1) %>% 
    arrange(ID, letter) 

out2 <- 
    out1 %>% 
    group_by(ID) %>% 
    summarise(output = paste0(letter, collapse = ",")) 
+0

Danke für die Hilfe. Es funktioniert wie Charme – skw1990