gpt4 book ai didi

r - 如何检查数字是否仅在一组中增加?

转载 作者:行者123 更新时间:2023-12-05 01:57:33 25 4
gpt4 key购买 nike

我想检查组 (ID) 中的“状态”列,看看数字是否只在增加。

例子:

df <-data.frame("ID" = c("A","A","A","B","B","B"),
"State"=c(1,2,3,1,4,2))
df %>%
group_by(ID) %>%
mutate(Check = ifelse(State > State[row.number() + 1], TRUE, FALSE)))

我希望得到的输出:查看:A - 真B - FALSE(因为在这个例子中 1,4,2 数字先增加后减少)

最佳答案

编辑:检查 Yuriy 答案以查看更紧凑的解决方案,如果您首先不知道 diffall 函数,则可能更难阅读


代码

require(tidyverse)

(
df
%>% group_by(ID)
%>% mutate(Diff = State - lag(State))
%>% filter(! is.na(Diff))
%>% summarise(Increasing = all(Diff >= 0))
)

输出

# A tibble: 2 x 2
ID Increasing
<chr> <lgl>
1 A TRUE
2 B FALSE

解释

(
df
%>% group_by(ID)
%>% mutate(Diff = State - lag(State))
)

ID State Diff
<chr> <dbl> <dbl>
1 A 1 NA
2 A 2 1
3 A 3 1
5 B 1 NA
6 B 4 3
7 B 2 -2

在每个子组中计算与上线的差异

(
df
%>% group_by(ID)
%>% mutate(Diff = State - lag(State))
%>% filter(! is.na(Diff))
%>% summarise( all(Diff >= 0))
)

NA 行被删除,然后我们必须检查是否存在负数。


数据样本

require(tidyverse)

df <- tribble( ~ ID, ~ State,
"A", 1,
"A", 2,
"A", 3,
"B", 1,
"B", 4,
"B", 2
)

关于r - 如何检查数字是否仅在一组中增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69164381/

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