[英]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.