【发布时间】:2019-05-01 15:43:40
【问题描述】:
我希望重复值,直到按组出现新值。我有一个不久前在网上找到的功能,它几乎可以满足我的要求,但并不完全。这是那个函数:
repeat.before <- function(x) {
ind <- which(!is.na(x))
ind_rep <- ind
if (is.na(x[1])) {
ind_rep <- c(min(ind), ind)
ind <- c(1, ind)
}
rep(x[ind_rep], times = diff(c(ind, length(x) + 1)))
}
此函数将成功地重复该值,直到出现一个新值,按组。问题是,如果列以 NA 开头,则在第一个值之前存在的以下行最终将采用第一个值,而不是剩余的 NA。我将用这个例子来说明我的意思:
group location
A NA
A NA
A New York
A NA
A NA
B Chicago
B NA
B Philly
B NA
上面的代码会输出这个:
group location
A New York
A New York
A New York
A New York
A New York
B Chicago
B Chicago
B Philly
B Philly
同样,这与我正在寻找的非常接近,但不完全是。这是我正在寻找的输出:
group location
A NA
A NA
A New York
A New York
A New York
B Chicago
B Chicago
B Philly
B Philly
基本上,我不希望“重复”代码在找到第一个值之前开始工作。在它这样做之前,我希望这些行保持 NA。目的是避免对行进行错误分类,即在上面的示例中,前两行 A 不应标记为 New York。
【问题讨论】:
标签: r function text grouping repeat