我有一個必不可少的資料集,格式如下:
| 團體 | 變數1 | 變數2 | 變數3 |
|---|---|---|---|
| 一個 | 1 | . | . |
| 一個 | 1 | . | . |
| 一個 | 1 | 2 | . |
| 一個 | 1 | 2 | 3 |
| 一個 | 1 | . | . |
| b | 1 | . | . |
| b | 1 | 2 | 3 |
| b | 1 | 2 | . |
| b | 1 | 2 | 3 |
| b | 1 | 2 | . |
我想以這種格式生成一個新變數:
| 團體 | 變數1 | 變數2 | 變數3 | 新變數 |
|---|---|---|---|---|
| 一個 | 1 | . | . | 1 |
| 一個 | 1 | . | . | 1 |
| 一個 | 1 | 2 | . | 2 |
| 一個 | 1 | 2 | 3 | 3 |
| 一個 | 1 | . | . | 3 |
| b | 1 | . | . | 1 |
| b | 1 | 2 | 3 | 3 |
| b | 1 | 2 | . | 3 |
| b | 1 | 2 | 3 | 3 |
| b | 1 | 2 | . | 3 |
請幫忙?
uj5u.com熱心網友回復:
這是一個帶有pmaxand的選項cummax(假設.缺少 - NA)。按 'group' 分組,invoke pmax across列名中 'starts_with' 'var' 的列,并得到累積最大值 ( cummax)
library(dplyr)
library(purrr)
df1 %>%
group_by(group) %>%
mutate(newvar = cummax(invoke(pmax,
c(across(starts_with('var')), na.rm = TRUE)))) %>%
ungroup
-輸出
# A tibble: 10 × 5
group var1 var2 var3 newvar
<chr> <int> <int> <int> <int>
1 a 1 NA NA 1
2 a 1 NA NA 1
3 a 1 2 NA 2
4 a 1 2 3 3
5 a 1 NA NA 3
6 b 1 NA NA 1
7 b 1 2 3 3
8 b 1 2 NA 3
9 b 1 2 3 3
10 b 1 2 NA 3
資料
df1 <- structure(list(group = c("a", "a", "a", "a", "a", "b", "b", "b",
"b", "b"), var1 = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L),
var2 = c(NA, NA, 2L, 2L, NA, NA, 2L, 2L, 2L, 2L), var3 = c(NA,
NA, NA, 3L, NA, NA, 3L, NA, 3L, NA)), row.names = c(NA, -10L
), class = "data.frame")
uj5u.com熱心網友回復:
看看這是否對你有幫助
lastValue <- function(x) tail(x[!is.na(x)], 1)
df$newvar <- apply(df, 1, lastValue)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/414681.html
標籤:
上一篇:在每組中繪制參考資料的密度圖網格
