R通过引用父项的值来替换NA

时间:2018-03-08 18:05:30

标签: r if-statement na

我正在尝试复制一个excel表达式,用于在两个值上使用索引和匹配填充缺少的主题信息。

相关的列是Topic(factor),Post.ID(int)和Parent.ID(int)。

str(df)
'data.frame':   1995 obs. of  3 variables:
 $ Topic    : Factor w/ 76 levels "Winter Olympics",..: 8 8 8 8 8 6 6
 $ Post.id  : int  295221 290611 288426 290823 292140 289990 289989
 $ Parent.id: int  NA NA NA NA 290611 ...

每一行都有一个帖子ID,但如果帖子是另一个帖子的子节点并且与父节点的帖子ID相同,则填充parent.id.层次结构只是一个级别。我试图通过将Post.ID与Parent.ID匹配并获取父级主题来向子级添加主题。

这是excel公式:

=IF([Topic]=0,IFERROR(IF([Parent ID]=0,[Topic],(INDEX([Topic]$[StartCell]:[Topic]$[EndCell], MATCH([Parent ID],[Post ID]$[StartCell]:[Post ID]$[EndCell],0))))),[Topic]),[Topic])

我尝试了以下ifelse函数并且它可以工作,除了它将因子转换为整数。

ifelse(is.na(df$Topic), 
         df$Topic[df$Post.id %in% df$Parent.id], 
         df$Topic)

我尝试将确切的事情转换为if_else,但我收到以下错误

Evaluation error: `true` must be length 1995 (length of `condition`) or one, not 429.

我还尝试创建一个独立的主题和帖子ID的单独数据框,重命名帖子ID然后做一个left_join,但这真的很笨重,我知道必须有一个更清洁的方法来做。

0 个答案:

没有答案