2017-10-11 1 views
1

다음은 수행 한 마케팅 캠페인이 포함 된 데이터 프레임 (DF)입니다. 성공률은 응답자 수를 나타내며 통신 유형은 채널 페이스 북, 트위터 등을 나타냅니다 (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의 출력은 I에 의해 서브 세트 위의 출력을 얻는 방법을 알고 싶어

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] 

가 생산을 :

,263,210
+0

꽤 좋은 해결책 – amonk

+0

깔끔한. 간단 해. –

관련 문제