在数据框中用其他列的值替换空值

6

我有一个数据帧,其中的一列有一些空单元格。数据看起来像这样:

   yymmdd    lat   lon mag depth knmilocatie baglocatie   tijd
 19861226 52.992 6.548 2.8   1.0       Assen      Assen  74751
 19871214 52.928 6.552 2.5   1.5   Hooghalen            204951
 19891201 52.529 4.971 2.7   1.2   Purmerend    Kwadijk 200914
 19910215 52.771 6.914 2.2   3.0       Emmen      Emmen  21116
 19910425 52.952 6.575 2.6   3.0   Geelbroek    Ekehaar 102631
 19910808 52.965 6.573 2.7   3.0     Eleveld      Assen  40114

期望的结果是:
   yymmdd    lat   lon mag depth knmilocatie baglocatie   tijd
 19861226 52.992 6.548 2.8   1.0       Assen      Assen  74751
 19871214 52.928 6.552 2.5   1.5   Hooghalen  Hooghalen 204951
 19891201 52.529 4.971 2.7   1.2   Purmerend    Kwadijk 200914
 19910215 52.771 6.914 2.2   3.0       Emmen      Emmen  21116
 19910425 52.952 6.575 2.6   3.0   Geelbroek    Ekehaar 102631
 19910808 52.965 6.573 2.7   3.0     Eleveld      Assen  40114

这个解决方案的启发,我尝试用以下内容替换空单元格:

df$baglocatie[df$baglocatie == ""] <- df$knmilocatie

然而,这种方法行不通,因为空单元格被填充了错误的值。另一种可能的解决方案也无法解决问题。
我该如何解决?
3个回答

15

试试使用ifelse

df$baglocatie <- ifelse(df$baglocatie == "", df$knmilocatie, df$baglocatie)

5

您需要索引替换列:

df[ df$baglocatie == "", "baglocatie"  ]  <- df[ df$baglocatie == "", "knmilocatie" ]

在8年之后看到这篇文章,我认为这是正确的答案,而不是我的。 - zx8754

3
或者你可以使用支持向量:
empty <- df$baglocatie == ""
df$baglocatie[empty] <- df$knmilocatie[empty]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接