如果缺少組中的所有值,我想從另一列中的值替換缺失值。這是示例和我認為可行的方法。可以有無限數量的組。
library(tidyverse)
df <- tibble(ID = c("A", "A", "A", "B", "B", "B"),
val1 = c(1,2,3,4,5,6),
val2 = c(NA, NA, NA, NA, 2, 3))
df %>%
group_by(ID) %>%
mutate(val2 = ifelse(all(is.na(val2)), val1, val2))
# Groups: ID [2]
ID val1 val2
<chr> <dbl> <dbl>
1 A 1 1
2 A 2 1
3 A 3 1
4 B 4 NA
5 B 5 NA
6 B 6 NA
我想得到的是 val2 應該從 val1 獲取值,如果組中的所有 val2 值都丟失了。現在看來,它給了我第一個價值。如果一切都沒有丟失,則不應發生任何事情。
Result:
# A tibble: 6 x 3
ID val1 val2
<chr> <dbl> <dbl>
1 A 1 1
2 A 2 2
3 A 3 3
4 B 4 NA
5 B 5 2
6 B 6 3
uj5u.com熱心網友回復:
這是否有效:
library(dplyr)
df %>% group_by(ID) %>% mutate(val2 = case_when(all(is.na(val2)) ~ val1, TRUE ~ val2))
# A tibble: 6 x 3
# Groups: ID [2]
ID val1 val2
<chr> <dbl> <dbl>
1 A 1 1
2 A 2 2
3 A 3 3
4 B 4 NA
5 B 5 2
6 B 6 3
uj5u.com熱心網友回復:
你幾乎擁有它。我創建了一個用于替換值的指標:
df %>%
group_by(ID) %>%
mutate(val3 = ifelse(all(is.na(val2)),1,0)) %>%
ungroup() %>%
mutate(val2 = ifelse(val3 == 1, val1, val2)) %>%
select(-val3)
輸出:
# A tibble: 6 x 3
ID val1 val2
<chr> <dbl> <dbl>
1 A 1 1
2 A 2 2
3 A 3 3
4 B 4 NA
5 B 5 2
6 B 6 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/328834.html
標籤:r
上一篇:這個SQL查詢在做什么?
