gpt4 book ai didi

r - 如何检查同一列中较早的值中是否存在某个值?

转载 作者:行者123 更新时间:2023-12-01 00:11:52 25 4
gpt4 key购买 nike

我想检查在当前行中引用的日期之前的任何日期的给定列中是否出现值。我会分享我的数据和我的尝试。

这是我的数据框。

stocks <- tibble(
time = as.Date('2009-01-01') + 0:9,
X = round(rnorm(10, 20, 1)),
Y = round(rnorm(10, 20, 2)),
Z = round(rnorm(10, 20, 4))
)

对于初学者,我想看看是否可以进行相对引用并在给定日期之前提取所有值。
stocks %>% 
mutate(in_prev = paste0(stocks[stocks$time < time, ]$X, collapse = "/"))

我想得到的结果是
# A tibble: 10 x 5
time X Y Z in_prev
<date> <dbl> <dbl> <dbl> <chr>
1 2009-01-01 20 19 24 ""
2 2009-01-02 22 22 25 "20"
3 2009-01-03 21 19 17 "20/22"
4 2009-01-04 20 16 20 "20/22/21"

相反,我得到了一个数据框,其中 in_prev col 是空的。

我想把它变成一个查询,以检查给定行中 X 的值是否出现在任何更早日期的 X 列中。

最佳答案

library(dplyr)

set.seed(123)
stocks <- tibble(time = as.Date('2009-01-01') + 0:9,
X = round(rnorm(10, 20, 1)),
Y = round(rnorm(10, 20, 2)),
Z = round(rnorm(10, 20, 4)))

stocks %>%
rowwise() %>%
mutate(in_prevX = paste0(unique(stocks[stocks$time < time, ]$X), collapse = "/"))

#> Source: local data frame [10 x 5]
#> Groups: <by row>
#>
#> # A tibble: 10 x 5
#> time X Y Z in_prevX
#> <date> <dbl> <dbl> <dbl> <chr>
#> 1 2009-01-01 19 22 16 ""
#> 2 2009-01-02 20 21 19 19
#> 3 2009-01-03 22 21 16 19/20
#> 4 2009-01-04 20 20 17 19/20/22
#> 5 2009-01-05 20 19 17 19/20/22
#> 6 2009-01-06 22 24 13 19/20/22
#> 7 2009-01-07 20 21 23 19/20/22
#> 8 2009-01-08 19 16 21 19/20/22
#> 9 2009-01-09 19 21 15 19/20/22
#> 10 2009-01-10 20 19 25 19/20/22

关于r - 如何检查同一列中较早的值中是否存在某个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57599013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com