col1在這個示例資料中,我想過濾掉和col2都是零的那些行。
df <- data.frame(
id = rep(letters[1:3], each = 2),
col1 = c(1, 1, 0, 0, 0, 0),
col2 = c(0, 1, 0, 0, 1, 0),
col3 = LETTERS[1:6]
)
這是我嘗試過的:
library(dplyr)
df %>%
filter(col1 == 1 | col2 == 1)
# id col1 col2 col3
# 1 a 1 0 A
# 2 a 1 1 B
# 3 c 0 1 E
它作業正常,但所有行都id被"b"洗掉。有什么方法可以為每個保留至少一行id?我的預期輸出是:
# id col1 col2 col3
# 1 a 1 0 A
# 2 a 1 1 B
# 3 b NA NA -
# 4 c 0 1 E
uj5u.com熱心網友回復:
您可以使用tidyr::complete():
df %>%
filter(col1 == 1 | col2 == 1) %>%
tidyr::complete(id = df$id, fill = list(col3 = "-"))
# # A tibble: 4 × 4
# id col1 col2 col3
# <chr> <dbl> <dbl> <chr>
# 1 a 1 0 A
# 2 a 1 1 B
# 3 b NA NA -
# 4 c 0 1 E
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460986.html
上一篇:基于其他列中的共同值的重復行?
