如果我想在R中表示一组在3个不同维度上键入的值,是否有简单/简洁的方法来生成它?
比如说我有以下键 - 每个维度必须支持具有不同数量的键。以下示例总共将引用360值(3 * 30 * 4):
rating <- c('AA','AAB','C')
timeInYears <- 1:30
monthsUntilStart <- c(1,3,6,12)
所以我希望能够访问,例如,从现在起7年后,从12个月开始,使用以下内容获得AA等级的值:
value <- data[rating=='AA',timeInYears==7,monthsUntilStart==12]
首先,我希望能够为每个密钥组合提供样本生成的值。
实际上它们将从数据库读入,但是要开始使用,从一组虚拟值提供虚拟结构会很好,可以简单地在结构上重复执行。
所以说我们有
values <- c(2.30,2.32,1.98,2.18,2.29,2.22)
因此每个(x,y,z)键都映射到其中一个值。
关于如何最好地接近这一点的任何提示或提示都很受欢迎!
谢谢!
菲尔。
答案 0 :(得分:3)
您可以在R中使用数组执行此任务。
首先,我们将创建一个包含所有可能性的数据框。根据需要,我们将分配循环到观察长度的值:
Remove-Item D:\Logs -Recurse -Force
New-Item -ItemType directory -Path D:\Logs
接下来,我们转换为数组:
rating <- c('AA','AAB','C')
timeInYears <- 1:30
monthsUntilStart <- c(1,3,6,12)
data <- expand.grid(rating=rating, timeInYears=timeInYears, monthsUntilStart=monthsUntilStart)
data$value <- c(2.30,2.32,1.98,2.18,2.29,2.22) # cycles through
请注意,整数将转换为字符串。
dataarray <- unclass(by(data[["value"]], data[c("rating", "timeInYears", "monthsUntilStart")], identity))
您可以通过索引访问所需的元素(它将返回为此示例分配的随机值)。
> dimnames(dataarray)
$rating
[1] "AA" "AAB" "C"
$timeInYears
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15"
[16] "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" "30"
$monthsUntilStart
[1] "1" "3" "6" "12"
修改强>
如果您愿意,也可以使用数据框本身。
> dataarray["AA", "7", "12"]
[1] 2.3