【发布时间】:2020-08-06 00:27:08
【问题描述】:
我对 R 比较陌生。我有一个包含 500 万个观察值和 1 个变量的数据框,看起来像这样:
PMID- 28524368
PMID- 28504342
PMID- 28501042
RN - 4964P6T9RB (Aldosterone)
RN - EC 3.4.23.15 (Renin)
RN - RWP5GA015D (Potassium)
MH - Adrenal Cortex Neoplasms/*diagnostic imaging/pathology/surgery
MH - Adrenocortical Adenoma/*diagnostic imaging/pathology/surgery
MH - Aldosterone/blood
MH - Humans
PMID- 28523858
PMID- 28517030
PMID- 28513869
MH - Hyperaldosteronism/*complications
MH - Hypertension/*etiology
MH - Male
MH - Middle Aged
MH - Potassium/blood
PMID- 28494487
PMID- 28493475
MH - Renin/blood
MH - Tomography, X-Ray Computed
但是,我只希望连续有 1 个 PMID,第一个 - 其余的 PMID 应该被删除,导致数据帧看起来像:
PMID- 28524368
RN - 4964P6T9RB (Aldosterone)
RN - EC 3.4.23.15 (Renin)
RN - RWP5GA015D (Potassium)
MH - Adrenal Cortex Neoplasms/*diagnostic imaging/pathology/surgery
MH - Adrenocortical Adenoma/*diagnostic imaging/pathology/surgery
MH - Aldosterone/blood
MH - Humans
PMID- 28523858
MH - Hyperaldosteronism/*complications
MH - Hypertension/*etiology
MH - Male
MH - Middle Aged
MH - Potassium/blood
PMID- 28494487
MH - Renin/blood
MH - Tomography, X-Ray Computed
请指教。我尝试使用:
# remove excessive PMIDs
for (i in nrow(original_reduced))
{
if (substr(original_reduced[i, 1], 1, 4) == "PMID")
{
if (substr(original_reduced[i+1, 1], 1, 4) == "PMID" && i != nrow(original_reduced)) # if next row is also PMID
{
original_reduced <- original_reduced[-c(i+1), ] # delete entry after
}
}
}
但我收到了这个错误:
Error in if (substr(original_reduced[i + 1, 1], 1, 4) == "PMID") { : missing value where TRUE/FALSE needed
即使我的数据框中没有 NA。
谢谢。
【问题讨论】: