我知道标题真的很混乱,但我必须解释我的问题。 我有2个数据集,其中第一个包含由pmid表示的每篇文章的引用频率。它看起来像这样:
pmid year freq
1 14561399 2011 1
2 14561399 2012 3
3 18511332 2010 1
4 21193046 2012 2
5 21193046 2013 2
6 14561399 2013 1
7 18511332 2011 1
8 18511332 2012 3
9 14561399 2014 1
10 16533158 2013 2
,第二个包含文章功能,如下所示:
pmid title_char title_wrds
1 20711763 75 9
2 20734175 109 12
3 20058113 93 13
4 20625865 142 17
5 20517661 103 12
6 20195930 128 16
您可以看到的两个数据集都包含" pmid",这是我需要"合并"或者"加入"这个数据集。这不是问题,只需使用merge()函数或使用dplyr包即可。但是当我这样做时,结果看起来像这样:
pmid title_char title_wrds year freq
1 184 77 10 2010 1
2 406 142 20 2008 1
3 407 110 16 2008 1
4 407 110 16 2003 1
5 408 79 10 1998 1
6 450 58 7 2012 2
7 450 58 7 2009 1
我的问题是 - 正如你可以看到的例如第2行和第3行 - 这两行包含相同的文章(相同的pmid,相同的特征)但由于引用年份它在两行中。
pmid title_char title_wrds year freq
3 407 110 16 2008 1
4 407 110 16 2003 1
我想要这样的事情:
pmid title_char title_wrds year2008Freq year2003Freq
1 407 110 16 1 1
每1篇文章就是1行。
答案 0 :(得分:0)
你可以尝试
library(reshape2)
res <- dcast(dfN, ...~paste0('year', year, 'Freq'), value.var='freq')
dfN <- structure(list(pmid = c(184L, 406L, 407L, 407L, 408L, 450L, 450L
), title_char = c(77L, 142L, 110L, 110L, 79L, 58L, 58L),
title_wrds = c(10L,
20L, 16L, 16L, 10L, 7L, 7L), year = c(2010L, 2008L, 2008L, 2003L,
1998L, 2012L, 2009L), freq = c(1L, 1L, 1L, 1L, 1L, 2L, 1L)),
.Names = c("pmid",
"title_char", "title_wrds", "year", "freq"), class = "data.frame",
row.names = c("1", "2", "3", "4", "5", "6", "7"))