r - cut 将切割级别的最小值和最大值提取为 data.frame 中的列

标签 r cut

我有一个数值向量,我想将其转换为五个数值级别。
我可以使用 cut 获得五个级别

dx <- data.frame(x=1:100)
dx$cut <- cut(dx$x,5)

但是我现在在提取级别的上下边界时遇到问题。
所以例如
(0.901,20.8] 在 dx$min 中为 0.901,在 dx$max 中为 20.8。

我试过:
dx$min <- pmin(dx$cut)
dx$max <- pmax(dx$cut)
dx

但这不起作用。

最佳答案

您可以尝试根据逗号拆分标签(预先转换为 character 并修改以抑制除 ,. 之外的标点符号),然后创建2列:

min_max <- unlist(strsplit(gsub("(?![,.])[[:punct:]]", "", as.character(dx$cut), perl=TRUE), ",")) # here, the regex ask to replace every punctuation mark except a . or a , by an empty string

dx$min <- min_max[seq(1, length(min_max), by=2)]
dx$max <- min_max[seq(2, length(min_max), by=2)]

head(dx)
#  x          cut   min  max
#1 1 (0.901,20.8] 0.901 20.8
#2 2 (0.901,20.8] 0.901 20.8
#3 3 (0.901,20.8] 0.901 20.8
#4 4 (0.901,20.8] 0.901 20.8
#5 5 (0.901,20.8] 0.901 20.8
#6 6 (0.901,20.8] 0.901 20.8

关于r - cut 将切割级别的最小值和最大值提取为 data.frame 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39387745/

相关文章:

bash - 使用 shell 脚本将逗号分隔值转换为值列表

r - 如何通过do函数在特定列中拆分不同数量的字符串

r - 如何在列表元素之间添加虚线?

linux - 将变量放入其中的剪切串联

linux - Unix 删除最后两个标记

Unix - 需要剪切具有多个空格作为分隔符的文件 - awk 还是 cut?

audio - 比较两个音频文件并查找剪辑

r - JAGS,rjags : "Error in file(modfile, "rt") : cannot open the connection"

r - 将 Rshiny 部署到 IBM Cloud 服务器

r - 线性回归回路和系数提取误差