需要从另一列中的数据创建数据表列字符串

时间:2019-02-06 19:00:48

标签: r

我正在尝试创建一列,该列使用数据表中另一列的数据并将其放入字符串中。例如,我具有值为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="")
}

2 个答案:

答案 0 :(得分:1)

cutHmisc::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%"))