Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确定R中每个变量的最频繁单词?_R - Fatal编程技术网

如何确定R中每个变量的最频繁单词?

如何确定R中每个变量的最频繁单词?,r,R,我已经开始学习R,目前正在熟悉文本挖掘软件包 我已经开始了一个项目,我已经从一个群组聊天导出了一个聊天日志,并将Excel中的数据清理成4行 我已经能够将所有的信息合并成一个,并创建一个由最常用的单词组成的wordcloud 编辑:为含糊不清的提交道歉 我完成的第一步是清理数据,以遵循以下简单结构 Date Time Sender Message 01/01/2019 09:54:03 Person 1 Hello 01/01/

我已经开始学习R,目前正在熟悉文本挖掘软件包

我已经开始了一个项目,我已经从一个群组聊天导出了一个聊天日志,并将Excel中的数据清理成4行

我已经能够将所有的信息合并成一个,并创建一个由最常用的单词组成的wordcloud

编辑:为含糊不清的提交道歉

我完成的第一步是清理数据,以遵循以下简单结构

Date            Time        Sender      Message
01/01/2019      09:54:03    Person 1    Hello
01/01/2019      10:55:03    Person 2    Hello
01/01/2019      11:56:03    Person 3    Hello
01/01/2019      12:57:03    Person 4    Hello
使用tm和wordcloud软件包,我通过以下方法成功地将过去一年中聊天室所有成员最常用的单词组合成wordcloud

    library(tm)
    library(readr)

    Chat <- read.csv("ChatExport_Cleansed.csv", stringsAsFactors = FALSE)

    chat_text <- paste(Chat$Message, collapse=" ")

    chat_source <- VectorSource(chat_text)

    corpus <- Corpus(chat_source)

    corpus <- tm_map(corpus, content_transformer(tolower))
    corpus <- tm_map(corpus, removePunctuation)
    corpus <- tm_map(corpus, stripWhitespace)
    corpus <- tm_map(corpus, removeWords, stopwords("english"))

    dtm <- DocumentTermMatrix(corpus)
    dtm2 <- as.matrix(dtm)

    frequency <- colSums(dtm2)
    frequency <- sort(frequency, decreasing=TRUE)

words <- names(frequency)
color_pal <- viridis(n =20)
wordcloud(words[1:300], frequency[1:900], 
          random.order=TRUE, random.color=TRUE,colors = color_pal)
library(tm)
图书馆(readr)

聊天从以下数据帧开始:

头部(df)
#一个tibble:6x4
日期时间发送者消息
1 2020-01-01 00:00:00人员1 C
2 2020-01-01 01:00:00人员1 C
3 2020-01-01 02:00:00人员1 B
4 2020-01-01 03:00:00人员1 B
5 2020-01-01 04:00:00人员1 C
6 2020-01-01 05:00:00人员1 E
您可以先使用
lubridate
软件包和功能
ymd\u hms
设置日期时间列,然后使用
dplyr
中的
filter
功能过滤特定小时数,以仅获取上午9点到下午5点之间发送的消息

库(lubridate)
图书馆(dplyr)
df%>%变异(日期时间=ymd\U hms(粘贴(日期、时间)))%>%
过滤器(小时(日期时间)>=9小时(日期时间)%mutate(日期时间=ymd\u hms(粘贴(日期、时间)))%>%
过滤器(小时(日期时间)>=9小时(日期时间)%
分组依据(发件人,邮件)%>%count()%>%
分组人(发件人)%>%
过滤器(n==最大值(n))
#一个tibble:3x3
#分组:发件人[2]
发送者消息n
1个人1 A 3
2人1 C 3
3个人2 E 4
如果您想知道每个发件人在特定时间段内发送的邮件数,可以执行以下操作:

df%>%变异(日期时间=ymd\uHMS(粘贴(日期、时间)))%>%
过滤器(小时(日期时间)>=9小时(日期时间)%
分组依据(发件人)%>%count()
#一个tibble:2x2
#分组:发件人[2]
发送者
1个人19
2个人2 9
它回答了你的问题吗

数据

结构(列表日期=结构, 18262, 18262, 18262, 18262, 18262, 18262, 18262, 18262, 18262, 18262, 18262, 18262, 18263, 18263, 18263, 18263, 18263, 18263, 18263, 18263, 18263, 18262, 18262, 18262, 18262, 18262, 18262, 18262, 18262, 18262, 18262, 18262, 18262, 18262, 18262, 18262, 18262, 18263, 18263, 18263, 18263, 18263, 18263, 18263, 18263, 18263),class=“Date”),Time=c(“00:00:00”,“01:00:00”,“02:00:00”, "03:00:00", "04:00:00", "05:00:00", "06:00:00", "07:00:00", "08:00:00", "09:00:00", "10:00:00", "11:00:00", "12:00:00", "13:00:00", "14:00:00", "15:00:00", "16:00:00", "17:00:00", "18:00:00", "19:00:00", "20:00:00", "21:00:00", "22:00:00", "23:00:00", "00:00:00", "00:00:00", "01:00:00", "02:00:00", "03:00:00", "04:00:00", "05:00:00", "06:00:00", "07:00:00", "08:00:00", "09:00:00", "10:00:00", "11:00:00", "12:00:00", "13:00:00", "14:00:00", "15:00:00", "16:00:00", "17:00:00", "18:00:00", "19:00:00", "20:00:00", "21:00:00", "22:00:00", "23:00:00", "00:00:00"), 发件人=c(“Person1”、“Person1”、“Person1”、“Person1”、“Person1”、“Person1”, “Person1”、“Person1”、“Person1”、“Person1”、“Person1”、“Person1”、“Person1”, “Person1”、“Person1”、“Person1”、“Person1”、“Person1”、“Person1”、“Person1”, “Person1”、“Person1”、“Person1”、“Person1”、“Person1”、“Person1”、“Person1”, “Person1”、“Person1”、“Person2”、“Person2”、“Person2”、“Person2”, “Person2”,“Person2”,“Person2”,“Person2”,“Person2”,“Person2”, “Person2”,“Person2”,“Person2”,“Person2”,“Person2”,“Person2”, “Person2”,“Person2”,“Person2”,“Person2”,“Person2”,“Person2”, “Person2”,“Person2”,“Person2”),消息=结构(c(3L, 3L、2L、2L、3L、5L、4L、1L、2L、3L、5L、3L、3L、1L、4L、1L、, 1L,5L,3L,2L,2L,1L,3L,4L,1L,3L,5L,4L,2L,5L,1L, 1L,2L,3L,4L,5L,5L,3L,1L,2L,5L,5L,4L,5L,2L,1L, 1L,3L,1L,5L),.Label=c(“A”,“B”,“c”,“D”,“E”),class=“factor”)),row.names=c(NA, -50L),类=c(“tbl_df”、“tbl”、“data.frame”))
从以下数据帧开始:

头部(df)
#一个tibble:6x4
日期时间发送者消息
1 2020-01-01 00:00:00人员1 C
2 2020-01-01 01:00:00人员1 C
3 2020-01-01 02:00:00人员1 B
4 2020-01-01 03:00:00人员1 B
5 2020-01-01 04:00:00人员1 C
6 2020-01-01 05:00:00人员1 E
您可以先使用
lubridate
软件包和功能
ymd\u hms
设置日期时间列,然后使用
dplyr
中的
filter
功能过滤特定小时数,以仅获取上午9点到下午5点之间发送的消息

库(lubridate)
图书馆(dplyr)
df%>%变异(日期时间=ymd\U hms(粘贴(日期、时间)))%>%
过滤器(小时(日期时间)>=9小时(日期时间)%mutate(日期时间=ymd\u hms(粘贴(日期、时间)))%>%
过滤器(小时(日期时间)>=9小时(日期时间)%
分组依据(发件人,邮件)%>%count()%>%
分组人(发件人)%>%
过滤器(n==最大值(n))
#一个tibble:3x3
#分组:发件人[2]
发送者消息n
1个人1 A 3
2人1 C 3
3个人2 E 4
如果您想知道每个发件人在特定时间段内发送的邮件数,可以执行以下操作:

df%>%变异(日期时间=ymd\uHMS(粘贴(日期、时间)))%>%
过滤器(小时(日期时间)>=9小时(日期时间)%
分组依据(发件人)%>%count()
#一个tibble:2x2
#分组:发件人[2]
发送者
1个人19
2个人2 9
它回答了你的问题吗

数据

结构(列表日期=结构, 18262, 18262, 18262,