如何从 R 中 PubMed 的数据框列表 MESH 列表中提取单词
How to extract words from a list of the data frame list MESH from PubMed in R
我一直在尝试从具有嵌套列表的数据框中提取数据,但在尝试使用字符串函数 (str_detect) 之后,我只能处理变量 Abstract 这里是一个示例我的数据
{r setup, include=FALSE}
library(RISmed)
library(reticulate)
library(dplyr)
library(tibble)
library(stringr)
RCT_topic <- 'Randomized Clinical Trial'
RCT_query <- EUtilsSummary(RCT_topic, mindate=2005, maxdate=2015, retmax=2000)
summary(RCT_query)
RCT_records <- EUtilsGet(RCT_query)
RCT_data <- data_frame('PMID'=PMID(RCT_records),
'Title'=ArticleTitle(RCT_records),
'Abstract'=AbstractText(RCT_records),
'Year Published'=YearPubmed(RCT_records),
'Month Published'=MonthPubmed(RCT_records),
'Country'= Country(RCT_records),
'Grant' =GrantID(RCT_records),
'Acronym' =Acronym(RCT_records),
'Agency' =Agency(RCT_records),
'Mesh'=Mesh(RCT_records))
#Latino
RCT_data$Latino <- grepl("Latino|latino|Hispanic|hispanic",RCT_data$Abstract)
table(RCT_data$Latino)
RCT_true = RCT_data[RCT_data$Latino == "TRUE",]
RCT_true %>% str_detect("Hispanic Americans")
RCT_true %>% mutate(Latino_Mesh = ifelse(Mesh %>% str_detect("Latino|latino|Hispanic|hispanic"), "yes", "no"))
此代码将创建 R 已读取的 11 个观察结果的子项,在变量 Abstract 中有拉丁裔或西班牙裔字样,我试图找出一种方法让 R 读取变量 Mesh,但它没有' 似乎能够读取整个嵌套列表,即使当您看到每个变量时,您也可以清楚地看到列表中有 Hispanic American 这个词
{r}
RCT_true$Mesh
我正在尝试找到一种方法,以便 R 可以读取 RCT_true$Mesh 和 return 是的,在新列中有一个词 "Hispanic Americans",例如我之前用抽象变量
由于 RCT_true$Mesh 是包含数据框的列表,因此应使用 grepl
函数评估每个数据框并将结果保存在索引器向量中(即 RCT_true$Mesh_Latino
):
lapply(RCT_true$Mesh, function(x){
any( grepl("(Latino|latino|Hispanic|hispanic)", as.character(x$Heading) ) )
}) %>%
unlist() %>%
as.logical() -> RCT_true$Mesh_Latino
RCT_true[RCT_true$Mesh_Latino == "TRUE",]
# # A tibble: 5 x 12
# PMID Title Abstract `Year Published` `Month Publishe… Country Grant Acronym Agency Mesh Latino Mesh_Latino
# <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr> <chr> <lis> <lgl> <lgl>
#1 2671… Beyo… "Within… 2015 12 United… CA01… CA NCI N… <dat… TRUE TRUE
#2 2670… Trea… OBJECTI… 2015 12 United… KL2 … TR NCATS… <dat… TRUE TRUE
#3 2669… Vali… "Resear… 2015 12 England NA NA NA <dat… TRUE TRUE
#4 2668… The … BACKGRO… 2015 12 United… K23 … MH NIMH … <dat… TRUE TRUE
#5 2665… Heal… BACKGRO… 2015 12 United… R01 … HL NHLBI… <dat… TRUE TRUE
我一直在尝试从具有嵌套列表的数据框中提取数据,但在尝试使用字符串函数 (str_detect) 之后,我只能处理变量 Abstract 这里是一个示例我的数据
{r setup, include=FALSE}
library(RISmed)
library(reticulate)
library(dplyr)
library(tibble)
library(stringr)
RCT_topic <- 'Randomized Clinical Trial'
RCT_query <- EUtilsSummary(RCT_topic, mindate=2005, maxdate=2015, retmax=2000)
summary(RCT_query)
RCT_records <- EUtilsGet(RCT_query)
RCT_data <- data_frame('PMID'=PMID(RCT_records),
'Title'=ArticleTitle(RCT_records),
'Abstract'=AbstractText(RCT_records),
'Year Published'=YearPubmed(RCT_records),
'Month Published'=MonthPubmed(RCT_records),
'Country'= Country(RCT_records),
'Grant' =GrantID(RCT_records),
'Acronym' =Acronym(RCT_records),
'Agency' =Agency(RCT_records),
'Mesh'=Mesh(RCT_records))
#Latino
RCT_data$Latino <- grepl("Latino|latino|Hispanic|hispanic",RCT_data$Abstract)
table(RCT_data$Latino)
RCT_true = RCT_data[RCT_data$Latino == "TRUE",]
RCT_true %>% str_detect("Hispanic Americans")
RCT_true %>% mutate(Latino_Mesh = ifelse(Mesh %>% str_detect("Latino|latino|Hispanic|hispanic"), "yes", "no"))
此代码将创建 R 已读取的 11 个观察结果的子项,在变量 Abstract 中有拉丁裔或西班牙裔字样,我试图找出一种方法让 R 读取变量 Mesh,但它没有' 似乎能够读取整个嵌套列表,即使当您看到每个变量时,您也可以清楚地看到列表中有 Hispanic American 这个词
{r}
RCT_true$Mesh
我正在尝试找到一种方法,以便 R 可以读取 RCT_true$Mesh 和 return 是的,在新列中有一个词 "Hispanic Americans",例如我之前用抽象变量
由于 RCT_true$Mesh 是包含数据框的列表,因此应使用 grepl
函数评估每个数据框并将结果保存在索引器向量中(即 RCT_true$Mesh_Latino
):
lapply(RCT_true$Mesh, function(x){
any( grepl("(Latino|latino|Hispanic|hispanic)", as.character(x$Heading) ) )
}) %>%
unlist() %>%
as.logical() -> RCT_true$Mesh_Latino
RCT_true[RCT_true$Mesh_Latino == "TRUE",]
# # A tibble: 5 x 12
# PMID Title Abstract `Year Published` `Month Publishe… Country Grant Acronym Agency Mesh Latino Mesh_Latino
# <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr> <chr> <lis> <lgl> <lgl>
#1 2671… Beyo… "Within… 2015 12 United… CA01… CA NCI N… <dat… TRUE TRUE
#2 2670… Trea… OBJECTI… 2015 12 United… KL2 … TR NCATS… <dat… TRUE TRUE
#3 2669… Vali… "Resear… 2015 12 England NA NA NA <dat… TRUE TRUE
#4 2668… The … BACKGRO… 2015 12 United… K23 … MH NIMH … <dat… TRUE TRUE
#5 2665… Heal… BACKGRO… 2015 12 United… R01 … HL NHLBI… <dat… TRUE TRUE