我是這個社區的新手,希望能解決這個問題。
我有一個如下所示的資料框:
df <- data.frame(id=c(1,2,3,4),id2=c("x","y","z","a"),value1=c(1,2,3,4),value2=c(1,2,3,4),value3=c(1,1,3,4),value4=c(1,2,3,4),value5=c(1,2,3,"ab"))
我想檢查 value1、value2、value3 和 value4 是否都相同。我可以使用以下代碼使其作業:
comp4 <- df[,3:7] %>%
rowwise %>%
mutate(same =n_distinct(unlist(cur_data())) == 1) %>%
ungroup
但是,我最終丟失了資料框中的 id1 和 id2 列。我如何通過保留 id1 和 id2 來解決這個問題。
uj5u.com熱心網友回復:
取而代之的select荷蘭國際集團僅列,讓他們同時在選擇列across內mutate
library(dplyr)
df %>%
rowwise %>%
mutate(same = n_distinct(unlist(across(starts_with('value'),
~ as.character(.x)))) == 1) %>%
ungroup
-輸出
# A tibble: 4 × 8
id id2 value1 value2 value3 value4 value5 same
<dbl> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <lgl>
1 1 x 1 1 1 1 1 TRUE
2 2 y 2 2 1 2 2 FALSE
3 3 z 3 3 3 3 3 TRUE
4 4 a 4 4 4 4 ab FALSE
或者也可以使用 if_all
df %>%
mutate(same = if_all(value2:value5, ~ .== value1))
id id2 value1 value2 value3 value4 value5 same
1 1 x 1 1 1 1 1 TRUE
2 2 y 2 2 1 2 2 FALSE
3 3 z 3 3 3 3 3 TRUE
4 4 a 4 4 4 4 ab FALSE
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/397025.html
上一篇:根據資料庫中的所有其他列添加一列
