我正在尝试为出版的所有出版物提取共同作者的姓名和隶属关系。我能够在数据框中获得作者姓名的列表,但现在需要添加带有该名称的从属关系。我一直在尝试这样做,但是我不确定如何做。
我需要将两个列表组合在一起:作者和每个作者的隶属关系。
query = "an author's name"
res <- EUtilsSummary(query, db="pubmed", mindate=2015, maxdate=2019)
QueryCount(res)
auths <- Author(EUtilsGet(res))
affs <- Affiliation(EUtilsGet(res))
Last<-sapply(auths, function(x)paste(x$LastName, x$ForeName, sep = ", "))
auths2<-as.data.frame(sort(table(unlist(Last)), dec=TRUE))
names(auths2)<-c("name")
auths2
我正在使用RISmed提取数据。我想要以下格式的数据:
姓氏,名字关联
我不在乎计数。
我想看这的另一种方法是:
将两个列表合并在一起。
列表A是数据框的列表:此列表中有多个项目,其中每个项目都具有以下内容
LastName ForeName Initials
A B AB
C D CD
列表B是列表列表:
Affiliations:
"X university"
"Y University"
我要做的是将这两个列表组合在一起,以便每个作者的隶属关系在数据框中显示为一列。最终结果如下:
LastName ForeName Initials Affiliations
A B AB "X University"
C D CD "Y University"
答案 0 :(得分:1)
由于某些查询可以返回作者的NA
值和隶属关系的零长度向量,所以我做了一个小函数,如果两个列表项都正确,则仅返回cbind()
值:
special_cbind = function(authors,affiliations){
if(length(affiliations) == 0 | all(is.na(authors)) ){
authors
}
else if(nrow(authors) == length(affiliations)){
cbind(authors,affiliations)
}
else{
affiliations = rep(affiliations,nrow(authors))
cbind(authors,affiliations)
}
}
然后将其应用于地图的每个列表项。
Map(special_cbind,auths,affs)
这对您的数据有用吗?