我正在尝试创建一列,该列使用数据表中另一列的数据并将其放入字符串中。例如,我具有值为16、24、47和32的amt列。然后,我使用floor(d $ amt / 10)* 10来获得10、20、40和30的结果。 create将是字符串“ 10-19%”,“ 20-29%”等的列。
基本上我想使用
cat(floor(d$amt/10)*10, '-', floor(d$amt/10)*10+9, '%', sep="")
但是这不会给出新的列。
我尝试将这些值放在一个临时数组中,并使用for循环制作另一个数组,但我不断收到替换长度为0的错误。
temp = floor(d_1990$amt/10)*10
ret = rep(0, 267)
for (i in 1:length(temp)) {
print(i)
x = temp[i]
ret[i] = cat(x, '-', x+10, '%', sep="")
}
答案 0 :(得分:1)
cut
或Hmisc::cut2()
绝对是解决问题的方法,但是您也可以通过以下方法来实现:
df <- data.frame(amt = c(16, 24, 47, 32))
df$label <- paste0(floor(df$amt / 10) * 10, "-", floor(df$amt / 10) * 10 + 9, "%")
答案 1 :(得分:0)
您可以使用cut()
来标识所需的断点,并使用labels
参数来标识要输出的字符串。
data <- data.frame(amt = c(16, 24, 47, 32))
data$grp <- cut(data$amt,
breaks = seq(0,100,10),
right = FALSE,
labels = c("0-10%", "11-20%", "21-30%", "31-40%", "41-50%", "51-60%", "61-70%", "71-80%", "81-90%", "91-100%"))