以下是我执行的一系列营销活动的数据框(DF)。成功百分比显示受访者的数量,而沟通类型指的是频道 - 脸书,推特等(Ai- FB,L1-Linkedin)。笔记本电脑,新手和鼠标指的是构成句子的单词。最初的数据框有一句话 - 比如购买一台新笔记本电脑并免费获得鼠标。我用qdap解析了上面的内容并在下面生成了DF。
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 :(得分: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
答案 1 :(得分:0)
我不完全确定这是你想要的,但无论如何我很确定你想要summarise_at
:
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