如何将列值设置为最后一个正整数?下面是一个例子:
这是一个数据框:
id <- c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2)
test <- c(5,6,-1,2,3,-1,-2,-3,5,-2,-1,1,1,2,-3,-3,2,3,5,4)
df1 <- data.frame(id,test)
期望的输出:id|test
1 |5
1 |6
1 |6
1 |2
1 |3
1 |3
1 |3
1 |3
1 |5
1 |5
2 |NA
2 |1
2 |1
2 |2
2 |2
2 |2
2 |2
2 |3
2 |5
2 |4
最佳答案
我们可以replace
NA
的负值并使用 fill
替换 NA
每个“id”具有前一个非 NA 值的元素
library(dplyr)
library(tidyr)
df1 %>%
mutate(test = replace(test, test < 0, NA)) %>%
group_by(id) %>%
fill(test)
-输出# A tibble: 20 x 2
# Groups: id [2]
# id test
# <dbl> <dbl>
# 1 1 5
# 2 1 6
# 3 1 6
# 4 1 2
# 5 1 3
# 6 1 3
# 7 1 3
# 8 1 3
# 9 1 5
#10 1 5
#11 2 NA
#12 2 1
#13 2 1
#14 2 2
#15 2 2
#16 2 2
#17 2 2
#18 2 3
#19 2 5
#20 2 4
关于r - 如何将列值设置为最后一个正整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64016488/