考慮以下資料集:
df <- data.frame (Treatment = c("Low", "Low", "Low", "Med", "Med", "High", "High", "Med", "Low", "Med", "High", "High"),
Value = c( 23,4,56,76,89,86,66,31,48,51,75,101))
| 治療 | 價值 |
|---|---|
| 低的 | 23 |
| 低的 | 4 |
| 低的 | 56 |
| 醫學 | 76 |
| 醫學 | 89 |
| 高的 | 86 |
| 高的 | 66 |
| 醫學 | 31 |
| 低的 | 48 |
| 醫學 | 51 |
| 高的 | 75 |
| 高的 | 101 |
我想創建一個列,使資料框看起來像:
| 治療 | 價值 | ID |
|---|---|---|
| 低的 | 23 | 低1 |
| 低的 | 4 | 低2 |
| 低的 | 56 | 低3 |
| 醫學 | 76 | 醫學1 |
| 醫學 | 89 | 醫學2 |
| 高的 | 86 | 高1 |
| 高的 | 66 | 高2 |
| 醫學 | 31 | 醫學3 |
| 低的 | 48 | 低4 |
| 醫學 | 51 | 醫學4 |
| 高的 | 75 | 高3 |
| 高的 | 101 | 高4 |
基本上我想根據它們所屬的級別為每一行創建一個具有單獨 ID 的列。
我試過這個:
df %>% group_by (Treatment) %>%
mutate (I.D = case_when(
Treatment == "Low" ~ paste ("Low",seq(1,4)),
Treatment == "Med" ~ paste ("Med",seq(1,4)),
Treatment == "High" ~ paste("High",seq(1,4))))
首先十分感謝
uj5u.com熱心網友回復:
您可以使用row_number():
library(dplyr)
df |>
group_by(Treatment) |>
mutate(id = paste0(Treatment, row_number()))
輸出:
#> # A tibble: 12 x 3
#> # Groups: Treatment [3]
#> Treatment Value id
#> <chr> <dbl> <chr>
#> 1 Low 23 Low1
#> 2 Low 4 Low2
#> 3 Low 56 Low3
#> 4 Med 76 Med1
#> 5 Med 89 Med2
#> 6 High 86 High1
#> 7 High 66 High2
#> 8 Med 31 Med3
#> 9 Low 48 Low4
#> 10 Med 51 Med4
#> 11 High 75 High3
#> 12 High 101 High4
由reprex 包于 2022-06-14 創建(v2.0.1)
uj5u.com熱心網友回復:
如果您不想要“低”后的空格,只需使用paste0而不是“粘貼”
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/491351.html
下一篇:將地圖分成兩列pyspark
