我想在一個組(ID)中檢查 "狀態 "列,以查看數字是否只增加。
示例:
df <-data. frame("ID" = c("A"/span>。 "A"/span>。 "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 - TRUE B - FALSE (因為在這個例子中,1,4,2的數字增加,但隨后減少)
uj5u.com熱心網友回復:
編輯:查看Yuriy的答案,看看一個更緊湊的解決方案,如果你不知道diff和all函式,可能更難讀懂
代碼
require(tidyverse)
()
df
%>% group_by(ID)
%> % mutate(Diff = State - 滯后(狀態))
%>% filter(! is. na(Diff))
%> %總結(遞增= 所有(Diff > = 0))
)
輸出
# A tibble: 2 x 2
ID遞增
<chr>/span> <lgl>
1 A TRUE
2 B FALSE
解釋
()
df
%>% group_by(ID)
%> % mutate(Diff = State - 滯后(狀態))
)
ID狀態差異
<chr> < dbl> <dbl>/span>
1 A 1 NA
2 A 2 1
3 A 3 1
5 B 1 NA
6B 4 3
7 B 2 -2
在每個子組中計算與上線的差異
()
df
%>% group_by(ID)
%> % mutate(Diff = 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
)
uj5u.com熱心網友回復:
library(tidyverse)
df <-data. frame("ID" = c("A"/span>。 "A"/span>。 "A", "B", "B","B"),
"State"=c(1。 2。 3, 1, 4,2))
df %>%
group_by(ID) %>%
summarise(Check = all(diff(State) > = 0))
#> # A tibble: 2 x 2
#> ID檢查。
#> <chr> <lgl>
#> 1 A TRUE
#> 2 B FALSE
df %>%
group_by(ID)%>%
mutate(Check = all(diff(State) > = 0))
#> # A tibble: 6 x 3
#> # 組。 ID[2]
#> ID狀態檢查。
#> <chr> <dbl> <lgl>
#> 1 A 1 TRUE
#> 2 A 2 TRUE
#> 3 A 3 TRUE
#> 4 B 1 FALSE
#> 5 B 4 FALSE
#> 6 B 2 FALSE
創建于2021-09-13,由reprex軟體包(v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/314492.html
標籤:
上一篇:React如何用useEffect和useCallback重新渲染狀態鉤?
下一篇:確定Excel表格中的頁數
