Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 需要从另一列中的数据创建数据表列字符串_R - Fatal编程技术网

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

R 需要从另一列中的数据创建数据表列字符串,r,R,我试图创建一个列,该列使用数据表中另一列的数据,并将其放入字符串中。例如,我有值为16、24、47和32的列amt。然后使用floor(d$amt/10)*10得到10、20、40和30的结果。我要创建的列将是一列字符串“10-19%”、“20-29%”,等等 基本上我想用 cat(floor(d$amt/10)*10, '-', floor(d$amt/10)*10+9, '%', sep="") 但这并没有提供一个新的专栏 我尝试将这些值放入一个临时数组中,并使用for循环生成另一个数组,

我试图创建一个列,该列使用数据表中另一列的数据,并将其放入字符串中。例如,我有值为16、24、47和32的列amt。然后使用floor(d$amt/10)*10得到10、20、40和30的结果。我要创建的列将是一列字符串“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="")
}
您可以使用
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%"))

data
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, "%")
df