我有一個包含一列的資料框df$condition。它包含字串,如“sunny”、“sunshine”、“dark”、“night”等,每行1個。現在我想在第二列中對它們進行編碼df$code。如果行中 df$condition 中的值包含“sun”,則應為 1 df$code,如果包含“dark”或“night”,則應為 2。否則,如果有任何不同或什么都沒有,則應有一個 99。
uj5u.com熱心網友回復:
由于您有多個條件,因此case_when陳述句是最簡單的。
library(tidyverse)
data = data.frame(V1 = c("sunny", "sunshine", "dark", "night", "cloud"))
data %>%
mutate(V2 = case_when(
grepl("sun", V1) ~ 1,
grepl("dark|night", V1) ~ 2,
TRUE ~ 99
)
)
V1 V2
1 sunny 1
2 sunshine 1
3 dark 2
4 night 2
5 cloud 99
uj5u.com熱心網友回復:
您可以使用嵌套ifelse陳述句執行此操作:
df$code <- with(df, ifelse(grepl("sun", condition), 1, ifelse(grepl("dark|night", condition), 2, 99)))
uj5u.com熱心網友回復:
使用 dplyr
df <- data.frame(condition=c("sunny","sunshine","dark","night","somethingelse"))
df %>%
mutate(code = if_else(grepl("sun",condition),1,
ifelse(condition=="dark"| condition=="night",2,99)))
輸出:
condition code
1 sunny 1
2 sunshine 1
3 dark 2
4 night 2
5 somethingelse 99
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/318534.html
標籤:r
上一篇:為什么這個R代碼給我110而不是30或10或310?
下一篇:第n組標記(僅計算新組的畢業生)
