我正在追踪同行评审文献中许多研究领域的处理情况,并已处理了近1500篇论文。在我的数据文件中,我有25个主题的列,在数据文件中注释了1(存在)和0(缺勤)。数据文件大致如下所示:
TITLE AUTHORS JOURNAL YEAR ... TOPIC1 TOPIC2 TOPIC3 TOPIC4 ... TOPIC25
'xxx' 'yyy' 'zzz' 2002 1 0 0 1 0
'xxx' 'yyy' 'zzz' 2012 0 0 0 0 1
'xxx' 'yyy' 'zzz' 2002 0 0 1 1 0
'xxx' 'yyy' 'zzz' 2015 1 0 0 0 0
'xxx' 'yyy' 'zzz' 2015 0 0 0 0 0
'xxx' 'yyy' 'zzz' 2013 0 0 1 1 1
'xxx' 'yyy' 'zzz' 2012 1 0 0 0 0
'xxx' 'yyy' 'zzz' 2012 0 0 1 0 1我需要统计一下论文中各种主题的频率,最后得到如下的数据框架:
TOPIC count
TOPIC1 7
TOPICS2 19
.
.
TOPIC25 15我一直在谷歌上搜索、阅读和尝试一些不同的东西,但是到目前为止没有什么效果,因此没有发布任何代码。
任何帮助都很感激..。
发布于 2016-04-17 13:12:09
我们可以遍历感兴趣的列,让sum和stack创建两个列‘data.framework’。
res <- setNames(stack(lapply(df1[grep("^TOPIC\\d+", names(df1))],
sum))[2:1], c("TOPIC", "count"))
head(res,2)
# TOPIC count
#1 TOPIC1 7
#2 TOPIC2 19如果列名没有任何模式,则使用列索引对列进行子集,即假设POPABU是第5列,而POPGEN是最后一列,
res <- setNames(stack(lapply(df1[5:ncol(df1)],
sum))[2:1], c("TOPIC", "count"))https://stackoverflow.com/questions/36676827
复制相似问题