我的数据集中有两个变量,我想将college_grad和sex组合起来创建sex_grad。这些级别应如下:
collegegrad有两个级别:
sex有两个级别:
我应该如何处理所需的组合来支持4个级别?我知道如何将mutate与ifelse一起使用,但这只会创建两个变量。
发布于 2018-03-19 07:49:27
使用paste而不是ifelse。
college_grad = c("Graduate", "Non-graduate")
sex = c("Male", "Female")
df <- expand.grid(college_grad = college_grad, sex = sex)
df$sex_grad <- with(df, paste(sex, college_grad))
df
# college_grad sex sex_grad
# 1 Graduate Male Male Graduate
# 2 Non-graduate Male Male Non-graduate
# 3 Graduate Female Female Graduate
# 4 Non-graduate Female Female Non-graduate编辑:这个对应于您的编辑。
college_grad = c("Yes", "No")
sex = c("Male", "Female")
df <- expand.grid(college_grad = college_grad, sex = sex)
df$sex_grad <- with(df, ifelse(college_grad == "Yes", paste(sex, "Graduate"), paste(sex, "Non-graduate")))
df发布于 2018-03-19 07:49:52
联合起来可能意味着几件事。如果没有可以处理的数据集和您想要的输出的示例,那么回答您的问题就更难了。
如果要将列添加到一起,并保留所有现有列,则:
library(tidyverse)
mtcars %>%
mutate(
mpg_am = mpg + am
)如果要删除现有列,请将mutate替换为transmute。
如果要将变量收集到列中,则:
mtcars %>%
rownames_to_column("car_names") %>%
gather(variable, obs, -car_names)发布于 2018-03-19 09:33:15
您也可以使用interaction。使用@hpesoj626 626的示例数据:
college_grad <- c("Graduate", "Non-graduate")
sex <- c("Male", "Female")
df <- expand.grid(college_grad = college_grad, sex = sex)
df$sex_grad <- interaction(df$sex, df$college_grad, sep = ' & ')结果:
> df
college_grad sex sex_grad
1 Graduate Male Male & Graduate
2 Non-graduate Male Male & Non-graduate
3 Graduate Female Female & Graduate
4 Non-graduate Female Female & Non-graduatehttps://stackoverflow.com/questions/49357888
复制相似问题