【发布时间】:2017-08-19 21:06:17
【问题描述】:
我已经获取了一个文本语料库,并将其分成我关心的 6 个元素的行('title'、'published'、'authors'、'country'、'journal' 和 'url')。每个引文都应该包含其中的每一个,但缺少数据。我为每个元素分配了一个“varnum”变量,这样我就可以遍历它们并找出缺失值的位置。我计划创建一个引用变量('citenum')并循环(或 lapply),并且仅在与预期发生变化时才在 'citenum' 中创建更改。我决定创建两个变量“con”和“prev_con”,这样我就可以做一些简单的数学运算来确定“citenum”何时应该增加(加一)。最终,我想创建一个矩阵来显示每次引用的缺失值。如果您能帮忙处理循环或 lapply ...我将不胜感激。
citation <- as.data.frame(cbind(prev_con, con, citenum, varnum))
library(data.table)
citationDT <- as.data.table(citation)
citationDT <- citationDT[, prev_con := shift(con)]
citation <- as.data.frame(citationDT)
citation[1,1] <- 99
head(citation, 20)
prev_con con citenum varnum
99 11 0 1
11 12 0 2
12 14 0 4
14 10 0 0
10 10 0 0
10 16 0 6
16 16 0 6
11 11 0 1
12 12 0 2
“con”变量是通过将 10 添加到“varnum”来创建的,因此我可以更轻松地找到需要将 citenum 增加到下一个级别的位置。 Prevcon 是使用 data.table 创建的,以转移到上一个 con 结果。
这是我尝试过的——最终使 citenum 等于最终的行号 6244。
for (i in 1:length(citation$citenum)){
if (citation$con[i] <= citation$prev_con) {
citation$citenum <- citation$citenum[i] + 1
} else {citation$citenum <- citation$citenum[i]
}
}
提前感谢您的帮助。
---根据原始提交编辑----
我希望得到的是:
prev_con con citenum varnum
1 99 11 1 1
2 11 12 1 2
3 12 14 1 4
4 14 10 2 0
5 10 10 3 0
6 10 16 3 6
7 16 16 4 6
8 16 11 5 1
9 11 12 5 2
10 12 13 5 3
【问题讨论】:
标签: r for-loop data.table lapply