让我们获取 mpg 文件并添加一个 ID 作为行号
DATA1 <- mpg
DATA2 <- dplyr::mutate(DATA1, ID = row_number())
我只想根据某些列的 ID 更新 DATA2
IF ID==1 then manufacturer="Honda", cyl=6, year=2005,
IF ID==2 then manufacturer="Toyota", class="sedan"
等等
我已经尝试过以下方法,但它很冗长,并且如果补丁跨越多行,则不适合大型数据库
DATA3 <- DATA2 %>%
mutate(manufacturer = ifelse(ID == 1, "Honda", manufacturer)) %>%
mutate(cyl = ifelse(ID == 1, 6, cyl)) %>%
mutate(year = ifelse(ID == 1, 2005, year))
DATA3 <- DATA2 %>%
mutate(manufacturer = ifelse(ID == 2, "Toyota", manufacturer)) %>%
mutate(class = ifelse(ID == 2, "sedan", class))
也许
case_when
可以帮助你
mpg %>%
mutate(
id = row_number(),
manufacturer = case_when(
id == 1 ~ "Honda",
id == 2 ~ "Toyota",
TRUE ~ manufacturer
),
cyl = case_when(
id == 1 ~ 6,
TRUE ~ cyl
),
year = case_when(
id == 1 ~ 2005,
TRUE ~ year
),
class = case_when(
id == 2 ~ "Sedan",
TRUE ~ class
)
)