我有一個這樣設定的資料集:
| ID | 顏色 |
|---|---|
| 一種 | 藍色 |
| 一種 | 藍色 |
| 一種 | 藍色 |
| 一種 | 藍色 |
| 乙 | 綠色 |
| 乙 | 綠色 |
我想根據 id 條目的數量重命名顏色。例如,如果 n > 3,則為粉紅色。我希望輸出如下所示:
| ID | 顏色 |
|---|---|
| 一種 | 粉色的 |
| 一種 | 粉色的 |
| 一種 | 粉色的 |
| 一種 | 粉色的 |
| 乙 | 綠色 |
| 乙 | 綠色 |
如果您愿意,我主要使用“現成”代碼,并且剛剛開始嘗試撰寫我自己的代碼來完成任務,盡管相當不成功。這是我嘗試撰寫的代碼,但很遺憾,它不起作用:
df <- df %>% group_by(id) %>% if(n() > 3){print("pink")}
如果是相關的,顏色是一個因素。
uj5u.com熱心網友回復:
你可以用
library(dplyr)
df %>%
group_by(id) %>%
mutate(color = ifelse(n() > 3, "pink", color)) %>%
ungroup()
這回傳
# A tibble: 6 x 2
id color
<chr> <chr>
1 a pink
2 a pink
3 a pink
4 a pink
5 b green
6 b green
如果要根據計數添加更多顏色,請case_when改用:
df %>%
group_by(id) %>%
mutate(color = case_when(n() > 1 & n() <= 3 ~ "brown",
n() > 3 ~ "pink",
TRUE ~ color)) %>%
ungroup()
uj5u.com熱心網友回復:
我們可能會if/else在mutate
library(dplyr)
df %>%
group_by(id) %>%
mutate(color = if(n() > 3) "pink" else color) %>%
ungroup
-輸出
# A tibble: 6 × 2
id color
<chr> <chr>
1 a pink
2 a pink
3 a pink
4 a pink
5 b green
6 b green
或使用 base R
df$color[with(df, id %in% names(which(table(id) > 3)))] <- "pink"
資料
df <- structure(list(id = c("a", "a", "a", "a", "b", "b"), color = c("blue",
"blue", "blue", "blue", "green", "green")),
class = "data.frame", row.names = c(NA,
-6L))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/334669.html
標籤:r
