问题描述
我想离散化一个包含连续变量的列。
数据看起来像;
c(0,25,77,423,6,8,3,65,32,22,10,15,1,2,4,5,6)
我想通过离散化将数字转换为分类数字,但零代表不同的类别。有时直接离散化可以保持不同的数字为零。
我想如果我保留零,然后离散化我的愿望就会实现。但是在数据框列中,由于索引,我无法做到:
structure(list(dummy_column = c(0,6)),class = "data.frame",row.names = c(NA,-23L))
例如,如果我想使用 2 个中断,类别应该是;零和其他 3 个离散化的,共 4 个类别。如果我能写一个函数来离散化一个可以直接用 dplyr::mutate()
提前致谢。
解决方法
如果你有像下面这样的中断 c(20,50)
,你可以尝试 cut
离散化 dummy_column
,例如,
breaks <- c(20,50)
df %>%
mutate(discrete = cut(dummy_column,c(-1,breaks,max(dummy_column))))
给出
dummy_column discrete
1 0 (-1,0]
2 25 (20,50]
3 77 (50,423]
4 423 (50,423]
5 6 (0,20]
6 8 (0,20]
7 3 (0,20]
8 65 (50,423]
9 32 (20,50]
10 22 (20,50]
11 10 (0,20]
12 0 (-1,0]
13 8 (0,20]
14 0 (-1,0]
15 15 (0,20]
16 0 (-1,0]
17 10 (0,20]
18 1 (0,20]
19 2 (0,20]
20 4 (0,20]
21 5 (0,20]
22 5 (0,20]
23 6 (0,20]