2017-10-11 112 views
1

以下是一個數據框(DF),其中包含一系列我進行的市場營銷活動。成功百分比顯示受訪者人數,溝通類型指頻道facebook,twitter等(Ai- FB,L1-Linkedin)。筆記本電腦,新的和鼠標是指組成該句子的單詞。原始數據幀有一句話說 - 買一臺新的筆記本電腦,並獲得免費的鼠標。我已經用qdap解析了上面的內容,並在下面生成了DF。在R中設置輸出以生成摘要

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 

我已經根據通信類型對DF進行了整理。組成該句子的三個詞語下的值表示在通信期間發送的原始句子中是否存在相同的值。

跨越所有通信最常見的關鍵字是由下面的代碼給出

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

的輸出Wordlist2如下

Laptop 4 
    New  3 
    Mouse 3 

我想知道如何獲得通過子集上面的輸出通訊類型。它可以手動完成,但我想知道是否存在可以執行此操作的程序包。

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

但是,這是行不通的。

+0

你確定嗎?這是一個連續的價值,並在你的例子中獨一無二 –

回答

0

我不能完全肯定這是你想要的,但在任何情況下,我敢肯定你想summarise_at:你想通過組`Success_Percentage`

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

謝謝。我需要列的子集,但它的工作很好。 –

1

我不使用dplyr,但我有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] 

產地:

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

編輯:

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

產地:

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

相當不錯的解決方案 – amonk

+0

整潔。這很簡單。 –