繁体   English   中英

dplyr 中的问题:新列中不需要的 NA

[英]issue in dplyr: unwanted NA's in new column

我有以下数据框:

Xnumber   Number
X17339    EWY
X17339    LW2Y
X17401    EWC
X17401    LWY
X17466    EWC
X17466    LWY 
X17466    EWY
X17466    LWC

我想使用以下代码创建一个新列 Number2:

library(dplyr 
df3<-df3 %>% group_by(Xnumber) %>% mutate(Number2=if_else(lead(Number)=="LWC","Unknown",Number))

这就是我生成的数据框的样子:

    Xnumber   Number   Number2
    X17339    EWY      EWY
    X17339    LW2Y     LW2Y
    X17401    EWC      EWC
    X17401    LWY      LWY
    X17466    EWC      EWC
    X17466    LWY      LWY
    X17466    EWY      Unknown
    X17466    LWC      LWC

但相反,我在我的新专栏中也得到了 NA,就像这样。

    Xnumber   Number   Number2
    X17339    EWY      EWY
    X17339    LW2Y     NA
    X17401    EWC      EWC
    X17401    LWY      NA
    X17466    EWC      EWC
    X17466    LWY      LWY
    X17466    EWY      Unknown
    X17466    LWC      NA

我不确定为什么会这样。 有什么想法吗?

使用default

library(dplyr)
 
df3<-df3 %>% 
  group_by(Xnumber) %>% 
  mutate(Number2=if_else(lead(Number, default = "") == "LWC","Unknown",Number))

由于您对数据进行了分组, lead将在每个组的末尾返回一个 NA(前面没有进一步的组内值)。 如果你想用最近的非 NA 替换它们,{tidyr} 的fill就派上用场了。 例子:

data.frame(x = c(1:3, NA, 5)) |>
   tidyr::fill(x, .direction = 'down')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM