R 在另一个数据框中搜索一列名称,并将来自其他列的数据合并在一起得到结果
我想创建一个基于两个数据帧的数据帧 第一种是期刊名称及其各自的影响因素。 第二个数据框包含我要搜索的期刊的名称 df1: df2: 我想要另一个df df3,其中df2中的日志在df1中搜索,如果匹配,请给我类似的内容,不带NA: 在一个地方,我希望日志影响因子对应于df2中的日志 df3 我开始使用R几个月,我不知道如何开始解决这个问题 两个数据帧在链接中更新: 一种解决方案是与dplyr一起使用join: 要使此工作正常,需要注意以下几点: 在df1中读取标题似乎占用了2行,因此跳过了第一行,因为这与前面的示例更接近 read.table includes stringsAsFactors=FALSE(如果不希望将其作为因子) 有些日记账名称是大写的,有些是小写的。连接是区分大小写的,因此包含toupper以使连接之前的所有内容都是大写的。作为替代方案,如果希望保留原始数据帧不变,可以将toupper嵌入到left_连接中R 在另一个数据框中搜索一列名称,并将来自其他列的数据合并在一起得到结果,r,dataframe,left-join,R,Dataframe,Left Join,我想创建一个基于两个数据帧的数据帧 第一种是期刊名称及其各自的影响因素。 第二个数据框包含我要搜索的期刊的名称 df1: df2: 我想要另一个df df3,其中df2中的日志在df1中搜索,如果匹配,请给我类似的内容,不带NA: 在一个地方,我希望日志影响因子对应于df2中的日志 df3 我开始使用R几个月,我不知道如何开始解决这个问题 两个数据帧在链接中更新: 一种解决方案是与dplyr一起使用join: 要使此工作正常,需要注意以下几点: 在df1中读取标题似乎占用了2行,因此跳过了第一行
请告诉我这是否是您的想法。df2是数据帧吗?还是仅仅是一个向量?您没有显示任何列名,这使它看起来像是一个向量。看看classdf2就知道了。嗨,Gregor,这真的是一个数据帧。我对问题进行了编辑。如果它们是字符,如果以stringsAsFactors=FALSE导入,或者使用as.character预先更正,则没有任何警告。@r2evans感谢您的注意-我无意中假设它们是因子…当问题没有可靠的样本数据时,很容易做到,也很常见。它几乎就在那里,。实际上,警告消息出现了。但当我改为字符时,会出现其他消息:UseMethodright_join中出错:无法将其应用于字符类警告消息:1:列完整日志标题/日志影响因子将不同级别的因子合并,强制到字符向量2:因子日志影响因子包含隐式NA,考虑使用福克斯猫:
Full Journal Title Journal Impact Factor
CA-A CANCER JOURNAL FOR CLINICIANS 223.679
Nature Reviews Materials 74.449
NEW ENGLAND JOURNAL OF MEDICINE 70.670
LANCET 59.102
NATURE REVIEWS DRUG DISCOVERY 57.618
CHEMICAL REVIEWS 54.301
Nature Energy 54.000
NATURE REVIEWS CANCER 51.848
JAMA-JOURNAL OF THE AMERICAN MEDICAL ASSOCIATION 51.273
NATURE REVIEWS IMMUNOLOGY 44.019
NATURE REVIEWS GENETICS 43.704
NATURE REVIEWS MOLECULAR CELL BIOLOGY 43.351
NATURE 43.070
and continues...
str(df1)
data.frame': 12541 obs. of 2 variables:
$ my.journal: Factor w/ 11879 levels "","2D Materials",..: 4155 1872 8866 8999 8033 8861 2143 8841 8856 5795 ...
$ jcr : Factor w/ 4732 levels "","0.000","0.006",..: 4731 2905 4614 4613 4337 4336 4335 4334 4333 4332 ...
my.journal
1 Bioscience journal
2 Summa phytopathologica (impresso)
3 Summa phytopathologica (impresso)
4 Summa phytopathologica (impresso)
5 Australian journal of crop science (online)
6 Summa phytopathologica (impresso)
7 Summa phytopathologica
8 Pesquisa agropecuaria tropical (online)
9 Crop breeding and applied biotechnology
10 Genetics and molecular research
11 Tropical plant pathology
12 Genetics and molecular research
13 Perspectivas online: biológicas e saúde
14 Científica (jaboticabal. online)
15 Journal of plant physiology & pathology
16 Tropical plant pathology
17 Summa phytopathologica (impresso)
> str(df2)
'data.frame': 17 obs. of 1 variable:
$ my.journal: Factor w/ 11 levels "Australian journal of crop science (online)",..: 2 10 10 10 1 10 9 8 4 5 ...
journal jcr total
<chr> <fct> <int>
1 Summa phytopathologica (impresso) NA 5
2 Genetics and molecular research NA 2
3 Tropical plant pathology NA 2
4 Australian journal of crop science (online) NA 1
5 Bioscience journal NA 1
6 Científica (jaboticabal. online) NA 1
7 Crop breeding and applied biotechnology NA 1
8 Journal of plant physiology & pathology NA 1
9 Perspectivas online: biológicas e saúde NA 1
10 Pesquisa agropecuaria tropical (online) NA 1
11 Summa phytopathologica NA 1
library(dplyr)
df1 <- read.table("df1.txt", skip = 1, header = TRUE, stringsAsFactors = FALSE)
df2 <- read.table("df2.txt", header = TRUE, stringsAsFactors = FALSE)
df1 <- df1 %>%
mutate(Full.Journal.Title = toupper(Full.Journal.Title))
df2 <- df2 %>%
mutate(my.journal = toupper(my.journal))
df2 %>%
left_join(df1, by = c("my.journal" = "Full.Journal.Title")) %>%
group_by(my.journal, Journal.Impact.Factor) %>%
summarize(total = n()) %>%
arrange(desc(total))
my.journal Journal.Impact.Factor total
<chr> <chr> <int>
1 SUMMA PHYTOPATHOLOGICA (IMPRESSO) NA 5
2 GENETICS AND MOLECULAR RESEARCH NA 2
3 TROPICAL PLANT PATHOLOGY 1.254 2
4 AUSTRALIAN JOURNAL OF CROP SCIENCE (ONLINE) NA 1
5 BIOSCIENCE JOURNAL 0.375 1
6 CIENTÃFICA (JABOTICABAL. ONLINE) NA 1
7 CROP BREEDING AND APPLIED BIOTECHNOLOGY 1.026 1
8 JOURNAL OF PLANT PHYSIOLOGY & PATHOLOGY NA 1
9 PERSPECTIVAS ONLINE: BIOLóGICAS E SAúDE NA 1
10 PESQUISA AGROPECUARIA TROPICAL (ONLINE) NA 1
11 SUMMA PHYTOPATHOLOGICA NA 1