我可以将标记化字符串列表合并到R中的数据帧吗?
我做了搜索,发现了几个类似的问题,但我仍然没有正确理解 我有一个包含ID、日期和文本列的数据框我可以将标记化字符串列表合并到R中的数据帧吗?,r,list,dataframe,text,R,List,Dataframe,Text,我做了搜索,发现了几个类似的问题,但我仍然没有正确理解 我有一个包含ID、日期和文本列的数据框 df <- data.frame(ID = c('1','2','1'), date = c('11/12', '11/13', '11/14'), text = c('wow amazing', 'test string', 'thank you wow')) df$text <- as.character(df$text)
df <- data.frame(ID = c('1','2','1'),
date = c('11/12', '11/13', '11/14'),
text = c('wow amazing', 'test string', 'thank you wow'))
df$text <- as.character(df$text)
df这里是一个用于计算令牌出现次数的基本R解决方案
# set ID as names to values in tokenList
r <- unlist(lapply(seq(x<-`names<-`(tokenList,df$ID)),
function(k) x[[k]] <- setNames(x[[k]],rep(names(x[k]),length(x[[k]])))))
# form the initial output data frame
dfout <- data.frame(id = names(r), word = r, cnt = 1)
# sum up occurrence of tokens
dfout <- aggregate(dfout[3], dfout[-3],FUN = sum)
或者您可以通过dfout更改最后一行。这里有一个用于计算令牌出现次数的基本R解决方案
# set ID as names to values in tokenList
r <- unlist(lapply(seq(x<-`names<-`(tokenList,df$ID)),
function(k) x[[k]] <- setNames(x[[k]],rep(names(x[k]),length(x[[k]])))))
# form the initial output data frame
dfout <- data.frame(id = names(r), word = r, cnt = 1)
# sum up occurrence of tokens
dfout <- aggregate(dfout[3], dfout[-3],FUN = sum)
或者您可以通过dfout更改最后一行,处理此任务的一种方法是使用tidytext和dplyr包。使用unnest\u tokens()
拆分单词,然后使用count()
计算每个ID中每个单词出现的次数
库(dplyr)
图书馆(tidytext)
unnest_标记(df,输入=文本,输出=单词)%>%
计数(ID、word、name=“频率”)
#ID字频率
#
#1惊人的1
#谢谢
#3 1哇2
#4 1你1
#5 2字符串1
#6.2测试1
处理此任务的一种方法是使用tidytext和dplyr包。使用unnest\u tokens()
拆分单词,然后使用count()
计算每个ID中每个单词出现的次数
库(dplyr)
图书馆(tidytext)
unnest_标记(df,输入=文本,输出=单词)%>%
计数(ID、word、name=“频率”)
#ID字频率
#
#1惊人的1
#谢谢
#3 1哇2
#4 1你1
#5 2字符串1
#6.2测试1
是否只想计算文本中的字数?你的最终预期结果是什么?@RonakShah我想分析一下哪个ID说得最多的单词,然后最终将它们与某个主题联系起来,比如“游戏”。我的数据集中有130万个句子,因此我倾向于取消对每个单词的测试。你只想计算文本中的单词数吗?你的最终预期结果是什么?@RonakShah我想分析一下哪个ID说得最多的单词,然后最终将它们与某个主题联系起来,比如“游戏”。我的数据集中有130万个句子,所以我倾向于不去看每个单词
> dfout
id word cnt
1 1 amazing 1
2 2 string 1
3 2 test 1
4 1 thank 1
5 1 wow 2
6 1 you 1
> dfout
id word cnt
1 1 wow 2
2 1 amazing 1
3 2 test 1
4 2 string 1
5 1 thank 1
6 1 you 1
library(dplyr)
library(tidytext)
unnest_tokens(df, input = text, output = word) %>%
count(ID, word, name = "frequency")
# ID word frequency
# <chr> <chr> <int>
#1 1 amazing 1
#2 1 thank 1
#3 1 wow 2
#4 1 you 1
#5 2 string 1
#6 2 test 1