【发布时间】:2020-02-26 10:03:43
【问题描述】:
这是我正在处理的数据:
x <- getURL("https://raw.githubusercontent.com/dothemathonthatone/maps/master/testmain.csv")
data <- read.csv(text = x)
我想为year_hh_inc 中的顶部、中间和底部三分之一的值创建一个虚拟变量。我的 id 列reg_schl 中的每个值都可能有多个year_hh_inc 的值,因此虚拟变量需要在reg_schl 上分组。
我希望能够在每个唯一的reg_schl 中区分year_hh_inc 中的值。
到目前为止,我有以下作为 Sotos 的解决方案发布在下面:
data %>%
group_by(reg_schl) %>%
mutate(category = cut(year_hh_inc, breaks = (quantile(year_hh_inc, c(0, 1 / 3, 2 / 3, 1), na.rm = TRUE)), labels = c("low", "middle", "high"), include.lowest = TRUE), vals = 1) %>%
pivot_wider(names_from = category, values_from = vals, values_fill = list(vals = 0))
这很好用。
我也用过Allan提供的这个解决方案:
cut_by_id <- function(x)
{
x$category <- cut(x$year_hh_inc, quantile(x$year_hh_inc, c(0,1/3,2/3,1), na.rm = TRUE),
labels = c("low","middle","high"), include.lowest = TRUE)
return(x)
}
data <- do.call(rbind, lapply(split(data, data$id), cut_by_id))
【问题讨论】:
-
你能显示你的预期输出吗?
标签: r dummy-variable continuous