[英]issue in dplyr: unwanted NA's in new column
I have the following data frame:我有以下数据框:
Xnumber Number
X17339 EWY
X17339 LW2Y
X17401 EWC
X17401 LWY
X17466 EWC
X17466 LWY
X17466 EWY
X17466 LWC
I want to create a new column, Number2, using the following code:我想使用以下代码创建一个新列 Number2:
library(dplyr
df3<-df3 %>% group_by(Xnumber) %>% mutate(Number2=if_else(lead(Number)=="LWC","Unknown",Number))
This is what I the resulting data frame should look like:这就是我生成的数据框的样子:
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
But instead, I also get NA's in my new column, like this.但相反,我在我的新专栏中也得到了 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
I'm not sure why this is happening.我不确定为什么会这样。 Any thoughts?有什么想法吗?
Use default
:使用default
:
library(dplyr)
df3<-df3 %>%
group_by(Xnumber) %>%
mutate(Number2=if_else(lead(Number, default = "") == "LWC","Unknown",Number))
Since you grouped your data, lead
will return an NA at each group's end (no further in-group value ahead).由于您对数据进行了分组, lead
将在每个组的末尾返回一个 NA(前面没有进一步的组内值)。 If you want to replace these with, say, the most recent non-NA, {tidyr}'s fill
comes in handy.如果你想用最近的非 NA 替换它们,{tidyr} 的fill
就派上用场了。 Example:例子:
data.frame(x = c(1:3, NA, 5)) |>
tidyr::fill(x, .direction = 'down')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.