计算r中数据帧中Z值的元素数
我想用Z值计算元素的数量 我将举一个我需要的例子 我在一个数据框中存储了大量的标签(数百万),它们的格式是计算r中数据帧中Z值的元素数,r,aggregate,R,Aggregate,我想用Z值计算元素的数量 我将举一个我需要的例子 我在一个数据框中存储了大量的标签(数百万),它们的格式是 如下图所示。我需要得到每个标签的计数,以找到前10个标签(提到最多的标签) 例如: 我需要的输出是: 注意:我是R的初学者,所以我需要最简单的方法 我的尝试:我尝试了函数table(),但它似乎适用于数字。 我尝试了group_by(),但没有得到想要的结果。 数据集示例: DF <- data.frame(Tag=c("<C++><Java>","<
DF <- data.frame(Tag=c("<C++><Java>","<java><python><javascript>","<java><C++>","<Json><PHP>","<PHP><Java>"))
Tag
1 <C++><Java>
2 <java><python><javascript>
3 <java><C++>
4 <Json><PHP>
5 <PHP><Java>
DF这是一个以R为底的解决方案;在我看来,在这种情况下不需要额外加载库
table(unlist(strsplit(gsub("(^<|>$)", "", DF$Tag), "><")));
# C++ java Java javascript Json PHP python
# 2 2 2 1 1 2 1
说明:分别从开头和结尾删除”
strsplit
on“>这里有一个基于R的解决方案;在我看来,在这种情况下不需要加载额外的库
table(unlist(strsplit(gsub("(^<|>$)", "", DF$Tag), "><")));
# C++ java Java javascript Json PHP python
# 2 2 2 1 1 2 1
说明:分别从开头和结尾删除”
;使用stringi
、dplyr
和tidytext
包,可以执行以下操作。您可以使用stri\u extract\u all\u regex()
提取计算机语言名称,拆分每个字符串,并使用unnest\u标记()创建数据帧。然后,计算每种语言在数据集中出现的次数
DF %>%
unnest_tokens(input = Tag, output = language, token = stri_extract_all_regex,
pattern = "(?<=\\<)[^<>]*(?=\\>)", to_lower = TRUE) %>%
count(language, sort = TRUE)
language n
<chr> <int>
1 java 4
2 c++ 2
3 php 2
4 javascript 1
5 json 1
6 python 1
DF%>%
unnest_标记(输入=标记,输出=语言,标记=stri_提取\u全部\u正则表达式,
pattern=“(?使用stringi
、dplyr
和tidytext
包,您可以执行以下操作。您可以使用stri\u extract\u all\u regex()
提取计算机语言名称,并拆分每个字符串,并使用unest\u标记()创建数据帧
。然后,计算每种语言在数据集中出现的次数
DF %>%
unnest_tokens(input = Tag, output = language, token = stri_extract_all_regex,
pattern = "(?<=\\<)[^<>]*(?=\\>)", to_lower = TRUE) %>%
count(language, sort = TRUE)
language n
<chr> <int>
1 java 4
2 c++ 2
3 php 2
4 javascript 1
5 json 1
6 python 1
DF%>%
unnest_标记(输入=标记,输出=语言,标记=stri_提取\u全部\u正则表达式,
pattern=“(?然后你可以上传dput(head(data))
你上传的图片。上传数据格式请发布(部分)您的样本数据使用dput
;屏幕截图没有用处,因为它需要潜在的受访者手动键入您的样本数据。我添加了一个数据集样本,谢谢扫描您,然后上载dput(head(data))
您上载的图像。以数据格式上载请发布(部分)您的样本数据使用dput
;屏幕截图没有用处,因为它需要潜在的应答者手动键入您的样本数据。我添加了一个数据集样本,谢谢。另一个选项是DF%%>%单独的行(标记,sep=“”)%%>%过滤器(nzchar(标记))%%>%计数(tolower(标记))
@akrun更简单!之后有一个过滤步骤,您不需要need@akrun在separate_rows()中有一个类似ommit_empty
的参数会很好
@akrun可能是的。对我来说,重要的是从问题中学习并尽可能多地帮助他人。专注于积极的事情是关键。(至少我还有一个向上的投票权!)另一个选择是DF%>%分隔行(Tag,sep=“”)%%>%过滤器(nzhar(Tag))%%>%计数(tolower(Tag))
@akrun更简单!之后有一个过滤步骤,您不需要need@akrun在separate_rows()中有一个类似ommit_empty
的参数会很好
@akrun可能是的。对我来说,重要的是从问题中学习,并尽可能多地帮助他人。专注于积极的事情是关键。(至少我还有一张赞成票!)
library(tidyverse)
library(tidytext)
DF%>%mutate(Freq=1)%>%
unnest_tokens(Tag,Tag,"regex",pattern="<|>|\\n")%>%group_by(Tag)%>%
summarise(count=n())%>%arrange(desc(count))
# A tibble: 6 x 2
Tag count
<chr> <int>
1 java 4
2 c++ 2
3 php 2
4 javascript 1
5 json 1
6 python 1
sort(table(trimws(unlist(strsplit(gsub("<(.*?)>(R?)","\\U\\1 ",DF$Tag,perl = T)," ")))),T)
JAVA C++ PHP JAVASCRIPT JSON PYTHON
4 2 2 1 1 1