如何使用匹配函数的输出来编写基于索引行值的函数

问题描述 投票:0回答:1

我有一个看起来像这样的分层数据框架(df),如果Document值为“ NA”,则相应的SubDoc代表最高级别的文档

 Document       SubDoc           Level
 "NA"           Document         1
 Document       SubDocument1     "NA"
 Document       SubDocument2     "NA" 
 Document       SubDocument3     "NA" 
 Document       SubDocument4     "NA"
 SubDocument1   Outcome1         "NA"
 SubDocument1   Outcome2         "NA"
 SubDocument1   Outcome3         "NA"

Etc ...

我希望级别表示从上到下的文档的级别数,目前我通过检查“文档”列是否为空以及是否将其分配为1来分配级别1,>

df$Level <- ifelse(is.na(df$Document), df$Level <- "1", df$Level <- "NA")

现在,我想通过检查文档列中的字符串在SubDoc列中是否匹配来分配该级别以下的所有级别(因为它们匹配的行将包含其父级是哪个级别)

match(df$Document,df$Subdoc)

在这种情况下返回它们匹配的位置的索引

"NA",1,1,1,1,2,2,2

我想做的就是获取那些索引号,并写一条语句,如果返回的行索引的Level值== 1,那么Level将得到2,因此例如第2行在第1行找到了一个匹配项,在该行中,Level == 1,因此第2行的Level值为2。结果数据帧看起来像这样

 Document       SubDoc           Level
 "NA"           Document         1
 Document       SubDocument1     2
 Document       SubDocument2     2 
 Document       SubDocument3     2 
 Document       SubDocument4     2
 SubDocument1   Outcome1         3
 SubDocument1   Outcome2         3
 SubDocument1   Outcome3         3

但是我不确定如何为此写出解决方案。任何帮助表示赞赏

我有一个看起来像这样的分层数据框架(df),如果Document值为“ NA”,则对应的SubDoc代表文档Document SubSubDoc的最高级别...

r matching
1个回答
0
投票

我们可以使用match

© www.soinside.com 2019 - 2024. All rights reserved.