在R中存储数据范围的有效方法

在R中存储数据范围的有效方法,r,dplyr,sparklyr,binning,R,Dplyr,Sparklyr,Binning,我在一个数据帧中有几百个变量,需要将它们放入桶中 目前,我使用的代码与以下类似: idx <- list() idx[[1]] <- which(df$myVariable < 628 & df$myVariable >= 0) idx[[2]] <- which(df$myVariable < 774 & df$myVariable >= 628) idx[[3]] <- which(df$myVariable < 885

我在一个数据帧中有几百个变量,需要将它们放入桶中

目前,我使用的代码与以下类似:

idx <- list()
idx[[1]] <- which(df$myVariable < 628 & df$myVariable >= 0)
idx[[2]] <- which(df$myVariable < 774 & df$myVariable >= 628)
idx[[3]] <- which(df$myVariable < 885 & df$myVariable >= 774)
idx[[4]] <- which(df$myVariable <= Inf & df$myVariable >= 4819)
idx[[5]] <- which(df$myVariable < 0)
df$myVariable[idx[[1]]] = 1
df$myVariable[idx[[2]]] = 2
df$myVariable[idx[[3]]] = 3
df$myVariable[idx[[4]]] = 4
df$myVariable[idx[[5]]] = 0

idx
cut()
函数是存储数据的一种方法。
dplyr::cut
有助于简化部分代码。尽管您必须解释为什么需要使用脚本生成代码。OP不清楚如何计算每个变量的切点。我研究了切点函数,但有两个问题:1)它将数据转换为一个因子(实际上更麻烦,而不是一个问题,因为as.numeric可以解决这个问题),2)间隔必须始终在同一侧打开/关闭。也就是说,它无法处理上面给出的示例:(-Inf,0]>0[0628)->1…[4819,Inf]->4注意,区间并非总是在同一侧打开/关闭。在几百个变量中,可能有共同点吗?我看到你说它们不尽相同,但至少有分组吗?我认为当
和在处发生变异时,
的组合(新版本
跨)可能至少效率更高,代码行数不到30000行。@ChuckP,你的建议让我找到了正确的答案。我已经重写了代码,以便在需要时使用mutate和case_。如果你想根据你的建议创建答案,我会接受它,这样你就可以获得学分。
cut()
函数是存储数据的一种方法。
dplyr::cut
有助于简化部分代码。不过您必须解释为什么需要使用脚本生成代码。OP不清楚如何计算每个变量的切点。我查看了cut函数,但有两个问题:1)它将数据转换为factor(由于as.numeric可以解决这一问题,所以它实际上更麻烦),并且2)间隔必须始终在同一侧打开/关闭。也就是说,它无法处理上面给出的示例:(-Inf,0]>0[0628)->1…[4819,Inf]->4注意,区间并非总是在同一侧打开/关闭。在几百个变量中,可能有共同点吗?我看到你说它们不尽相同,但至少有分组吗?我认为当和在处发生变异时,
的组合(新版本
跨)可能至少效率更高,代码行数不到30000行。@ChuckP,你的建议让我找到了正确的答案。我已经重写了代码,在什么时候使用mutate和case_。如果你想根据你的建议创建答案,我会接受它,这样你就可以获得学分。