R语言字符串处理的一次经历

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ESA_DSQ/article/details/80581440 最近笔者在研读一些文献,发现了Remote Sensing of Environment上的一期Special Issues。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ESA_DSQ/article/details/80581440

最近笔者在研读一些文献,发现了Remote Sensing of Environment上的一期Special Issues。这一期可以说是地学上Data Assimilation较为经典的研究吧。所以也是目前研读的重点。当然也是有些其他需求,现在想对这一期专刊的作者与客座编辑做些分析探讨。涉及到一些R语言的字符串处理方式。这里记录下。

1 数据描述

数据就比较简单了。一共两个数据。第一个数据如下。

主要包括Title和Author两列,这个数据我命名为RSEDAPaper.xlsx文件。

第二个数据如下。

主要包括EditorBoard,这个数据我命名为EditorBoard.xlsx文件。

2 问题描述与思路

我其实想了解Remote Sensing of Environment这一期专刊里,Editor Board参与的文章数量有几篇?所以这就涉及到两个处理,第一步是首先要对Author的字段进行分割成单独的作者,第二步是与EditorBoard的数据做匹配。

3 R语言实现

第一步首先要把用R语言将数据读入到内存里。由于我存的都是Excel文件,就需要用到openxlsx包。之前我已经介绍过如何在R里读取Excel文件。详情请见下文链接。

R语言读取Excel的神器——openxlsx

library(openxlsx)
basepath <- "E:/RSEDA/"
RSEDA <- read.xlsx(paste(basepath, "RSEDAPaper.xlsx", sep = ""))
Editor <- read.xlsx(paste(basepath, "EditorBoard.xlsx", sep = ""))

basepath是你存放数据的路径,根据具体情况来处理。

接下来就是涉及到第一步处理,我们首先将Author这种一长串的数据进行分割。

其实这种论文的作者名是比较好分割的,直接使用”,”分割即可。使用的R语言函数是strsplit。输入函数最主要包括两个,一个是字符串,一个是分割符号。样例如下:

a <- RSEDA$Author[2]
a
a <- unlist(strsplit(a, split = ","))
a

两次输出分别为:

可以发现已经成功做了分割,使得变成了7个作者单独的一个向量,当然如果你的字符串连接方式不是”,”,你只需要在split的等号后面进行修改。而作者个数不相同的情况下,这样子如何存储呢?这时候就用到了R里的一个特殊存储结构:列表。列表很适合存储这种长度不一的一些数据。

authorlist <- list()
for (i in 1:nrow(RSEDA)) {
  authors <- RSEDA$Author[i]
  authors <- unlist(strsplit(authors, split = ","))
  authorlist[[i]] <- authors
}
authorlist

可以发现很好的存储起来了,当然还有个小问题。由于英文的一些空格的原因,导致有些作者前后多了空格。所以做下一步匹配之前需要对这个进行处理,这里用的是stringr包。

library(stringr)
b <- " John M. Morrison "
str_trim(b, "both")

效果如图,side = “both”,指去除掉两边的空格,”left”和”right”则是去除左边或右边的空格。接下来只需要筛选数据做匹配。这里先生成一个跟前面authorlist一样结构的editorlist列表。然后针对每一篇文章作者分析,用一个for循环和luse获取作者个数,然后,再嵌套一个for循环,获取这一篇文章里每个作者名字,接着去除空格,然后是匹配,ifelse语句的含义是表示,如果这个作者名字有出现在Editor Board里,就输出1,如果没有输出0。

editorlist <- list()
editorlist <- authorlist
for (i in 1:nrow(RSEDA)) {
  luse <- length(authorlist[[i]])
  for (m in 1:luse) {
    deauthor <- authorlist[[i]][m]
    deauthor <- str_trim(deauthor, 'both')
    editorlist[[i]][m] <- ifelse(deauthor%in%Editor$EditorBoard, 1, 0)
  }
}

输出结果如图。接着对每一篇文章统计,是否有Editor Board,有的话是1,没有的话是0。

RSEDA$editor <- 1
for (i in 1:nrow(RSEDA)) {
  RSEDA$editor[i] <- ifelse("1"%in%editorlist[[i]], 1, 0) 
}

先生成了一个字段editor表示是否有Editor Board,默认值为1。而接着就是对每一行分析,这里每一行,是否有含”1”,有的话,即为有Editor Board。

事实上分析结果显示,这一期专刊里居然一个Editor Board也没有参与文章发表。也是蛮奇怪的。后期可能会针对这些文献做些介绍。这一期的R语言处理的步骤也可以用到其他部分,其实主要是字符串分割,去除空格以及简单的包含处理。

目录
相关文章
R语言字符串处理①
R基础字符串处理函数 nchar paste strsplit tolower toupper casefold chartr gsub sub substr substring grep grepl regexpr R包stringr 字符串处...
1155 0
|
3月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
2月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
55 3
|
7月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
7月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
3月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
4月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
4月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
下一篇
DataWorks