以R表示的天花板和地板值

以R表示的天花板和地板值,r,R,我有一个data.table整数表,它的值在1到60之间 我的问题是关于地板或天花板的任何数值,如下所示:12 18 24 30 36。。。六十 例如,假设my data.table包含数字13。我希望R将这个数字“转换”为12和18,因为13位于这些数字之间。此外,如果我有18,我希望R保持在18 如果我的data.table包含值50,我希望R将该数字转换为48和54,依此类推 我的目标是得到两个不同的data.table。一个用于保存地板值,另一个用于保存天花板值 你知道在R怎么能做到吗

我有一个data.table整数表,它的值在1到60之间

我的问题是关于地板或天花板的任何数值,如下所示:12 18 24 30 36。。。六十

例如,假设my data.table包含数字13。我希望R将这个数字“转换”为12和18,因为13位于这些数字之间。此外,如果我有18,我希望R保持在18

如果我的data.table包含值50,我希望R将该数字转换为48和54,依此类推

我的目标是得到两个不同的data.table。一个用于保存地板值,另一个用于保存天花板值

你知道在R怎么能做到吗

编辑:小于12的数字应始终转换为12

示例输出:

如果有以下数据表
数据表(c(1,28,29,41,53,53,17,41,41,53))

我需要以下两个输出data.tables:floored values
data.table(c(12,24,24,36,48,48,12,36,36,48))


我需要以下两个输出数据.tables:ceiled values
data.table(c(12,30,30,42,54,54,18,42,42,54))
我们可以使用
sapply
which.min
函数来实现这一点。从您的问题来看,目前还不清楚如何处理<12的值

x <- 1:60
num_list <- seq(12, 60, 6)

floorr <- sapply(x, function(x){
 diff_vec <- x - num_list
 diff_vec <- ifelse(diff_vec < 0, Inf, diff_vec)
 num_list[which.min(diff_vec)]
})


ceill <- sapply(x, function(x){
  diff_vec <- num_list - x
  diff_vec <- ifelse(diff_vec < 0, Inf, diff_vec)
  num_list[which.min(diff_vec)]
})

tail(cbind(x, floorr, ceill))

       x floorr ceill
[55,] 55     54    60
[56,] 56     54    60
[57,] 57     54    60
[58,] 58     54    60
[59,] 59     54    60
[60,] 60     60    60

x我们可以使用
sapply
which.min
函数来实现这一点。从您的问题来看,目前还不清楚如何处理<12的值

x <- 1:60
num_list <- seq(12, 60, 6)

floorr <- sapply(x, function(x){
 diff_vec <- x - num_list
 diff_vec <- ifelse(diff_vec < 0, Inf, diff_vec)
 num_list[which.min(diff_vec)]
})


ceill <- sapply(x, function(x){
  diff_vec <- num_list - x
  diff_vec <- ifelse(diff_vec < 0, Inf, diff_vec)
  num_list[which.min(diff_vec)]
})

tail(cbind(x, floorr, ceill))

       x floorr ceill
[55,] 55     54    60
[56,] 56     54    60
[57,] 57     54    60
[58,] 58     54    60
[59,] 59     54    60
[60,] 60     60    60

x这里有一个相当直接的方法(如果下面有任何值,则编辑为舍入到12):


以下是一种相当直接的方法(如果以下有任何值,则编辑为舍入到12):


如何处理<12的数字?如果你发布了预期输出,这会很有帮助。你能举一个明确的例子吗?那么你想找到6的两个倍数,其中包含一个给定的x?如何处理<12的数字?如果你发布了预期输出,这会很有帮助。你能举一个明确的例子吗?那么你想找到6的两个倍数,它包含一个给定的x吗?
> df
   nums floors ceils
1    10     12    12
2    11     12    12
3    12     12    12
4    13     12    18
5    14     12    18
6    15     12    18
7    16     12    18
8    17     12    18
9    18     18    18
10   19     18    24
11   20     18    24