2017-10-11 6 views
1

Das folgende ist ein Dataframe (DF) mit einer Reihe von Marketingkampagnen, die ich durchgeführt habe. Der Erfolgsprozentsatz zeigt die Anzahl der Befragten an und der Kommunikationstyp bezieht sich auf den Kanal - Facebook, Twitter usw. (A-FB, L1-Linkedin). Laptop, Neu und Maus beziehen sich auf die Wörter, aus denen der Satz besteht. Der ursprüngliche Datenrahmen hatte einen Satz - sagen Sie Kaufen Sie einen neuen Laptop und lassen Sie eine Maus frei. Ich habe das obige mit qdap analysiert und DF unten erzeugt.Subsetting Ausgabe in R, um Zusammenfassungen zu generieren

Sl NO Success_Percentage communication_type Laptop New Mouse 
    1 35.46666667    email    1  0  0 
    2 32.32830821    email    1  0  1 
    3 22.9226361    SMS    0  1  0 

    4 21.88888889    SMS    1  1  0 
    5 40.04085802    FB     0  1  1 
    6 38.7283237    FB     1  0  1 

Ich habe DF basierend auf dem Kommunikationstyp sortiert. Die Werte unter den drei Wörtern, die den Satz bilden, zeigen an, ob dieselben in dem ursprünglichen Satz vorhanden waren, der während der Kommunikation gesendet wurde.

Die häufigsten Keywords für alle Kommunikationen durch den folgenden Code

Wordlist2<-as.data.frame(colSums(DF)[colSums(DF)>0]) 

der Ausgang für Wordlist2 gegeben werden, wird wie folgt

Laptop 4 
    New  3 
    Mouse 3 

ich wissen will, wie das obige Ausgangs subsetted zu erhalten, indem Kommunikationstyp. Es kann manuell gemacht werden, aber ich würde gerne wissen, ob ein Paket existiert, das dies tun kann.

require(dplyr) 
    DF%>% 
    group_by(communication_type, Success_Percentage)%>% 
    summarise(colSums(DF)) 

Aber das funktioniert nicht.

+0

Sind Sie sicher, dass Sie gruppieren möchten 'Success_Percentage'? Es ist ein kontinuierlicher Wert und einzigartig in Ihrem Beispiel –

Antwort

0

Ich bin mir nicht ganz sicher, es ist, was Sie wollen, aber auf jeden Fall, dass ich bin mir ziemlich sicher, dass Sie summarise_at wollen:

DF <- read.table(text="Sl_NO Success_Percentage communication_type Laptop New Mouse 
    1 35.46666667    email    1  0  0 
    2 32.32830821    email    1  0  1 
    3 22.9226361    SMS    0  1  0 
    4 21.88888889    SMS    1  1  0 
    5 40.04085802    FB     0  1  1 
    6 38.7283237    FB     1  0  1",stringsAsFactors=F,header=T) 

require(dplyr) 
DF %>% group_by(communication_type) %>% summarise_at(c("Laptop","New","Mouse"),sum) 

# # A tibble: 3 x 4 
# communication_type Laptop New Mouse 
#    <chr> <int> <int> <int> 
# 1    email  2  0  1 
# 2     FB  1  1  2 
# 3    SMS  1  2  0 
+0

Danke. Ich musste die Spalten unterteilen, aber es hat wunderbar funktioniert. –

1

Ich benutze keine dplyr, aber ich habe eine Lösung für data.table:

#---Input data 
DF <- read.table(text = "Sl_NO Success_Percentage communication_type Laptop New Mouse 
         1 35.46666667    email    1  0  0 
         2 32.32830821    email    1  0  1 
         3 22.9226361    SMS    0  1  0 
         4 21.88888889    SMS    1  1  0 
         5 40.04085802    FB     0  1  1 
         6 38.7283237    FB     1  0  1", header = T) 

DF <- as.data.table(DF) #---Convert DF from data.frame to data.table 

DF[, .N, by = communication_type] 

Produziert:

communication_type N 
1:    email 2 
2:    SMS 2 
3:     FB 2 

edit:

DF[, .(Laptop = sum(Laptop), New = sum(New), Mouse = sum(Mouse)), by = communication_type] 

Produziert:

communication_type Laptop New Mouse 
1:    email  2 0  1 
2:    SMS  1 2  0 
3:     FB  1 1  2 
+0

ziemlich gute Lösung – amonk

+0

Ordentlich. Es ist einfach. –

Verwandte Themen