r语言 - 为什么突变函数不创建新列?



r这里是初学者。

我正试图用以下代码创建一个新的专栏:

data %>% mutate(age_cat = if_else(suspect_age %in% 0:14, "Under 15", if_else(suspect_age %in% 15:24, "15-24", ifelse(suspect_age %in% 25:34, "25-34", ifelse(suspect_age %in% 35:44, "35-44", ifelse(suspect_age %in% 45:54, "45-54", ifelse(suspect_age %in% 55:64, "55-64", "65 & over")))))))

但实际上并没有创建新的专栏,这是为什么?

提前谢谢!

使用tidyverse,可以使用case_when而不是所有的ifelse语句。如果~左侧是TRUE,则执行~右侧的内容。对于新列,您只需要将其分配给一个变量。或者,如果您只需要快速查看数据帧,那么您可以添加%>% view

library(tidyverse)
results <- data %>% 
mutate(age_cat = case_when(suspect_age %in% 0:14 ~ "Under 15",
suspect_age %in% 15:24 ~ "15-24",
suspect_age %in% 25:34 ~ "25-34",
suspect_age %in% 35:44 ~ "35-44",
suspect_age %in% 45:54 ~ "45-54",
suspect_age %in% 55:64 ~ "55-64",
TRUE ~ "65 & over"))

输出

results
suspect_age   age_cat
1           12  Under 15
2           77 65 & over
3           21     15-24
4           36     35-44
5           58     55-64
6           11  Under 15
7           74 65 & over
8           92 65 & over
9           32     25-34
10          31     25-34

或者另一种选择是使用cut:

data %>%
mutate(age_cat = cut(suspect_age, breaks = c(0, seq(14, 64, 10), 110),
labels = c("Under 15", "15-24", "25-34", "35-44", "45-54", "55-64", "65 & over"),
include.lowest = TRUE))

数据

data <- structure(list(suspect_age = c(12L, 77L, 21L, 36L, 58L, 11L, 
74L, 92L, 32L, 31L)), class = "data.frame", row.names = c(NA, 
-10L))

我假设您希望在运行该命令后,data中会出现新列。

在这种情况下,你需要分配它。

data <- data %>% mutate(age_cat = if_else(suspect_age %in% 0:14, "Under 15", if_else(suspect_age %in% 15:24, "15-24", ifelse(suspect_age %in% 25:34, "25-34", ifelse(suspect_age %in% 35:44, "35-44", ifelse(suspect_age %in% 45:54, "45-54", ifelse(suspect_age %in% 55:64, "55-64", "65 & over")))))))

最新更新