arrays - 使用 R 将变量名称 "QW1I5K20"的值存储在数组元素 Q[1,5,20] 中

标签 arrays r string excel csv

我有一个 excel 文件 (.csv),其中包含变量名称的排序列,例如“QW1I1K5”和针对它们的数值。
column 1 variable name , column 2 : value
这个列表继续
W 从 1 到 15
我从 1 到 4
K 从 1 到 30
总元素 = 15*4*30 = 1800

我想将这些变量的数值存储在一个数组中,该数组的索引是从变量 name 派生的。
例如 QW1I1K5 的值为 11 。这必须存储在数组元素 Q[1,1,5] = 11 (索引集 [1,1,5] 对应于 W1 , I1 , K5 )

最佳答案

可能这有帮助

Q <- array(dat$Col2, dim=c(15,4,30))

dat$Col2[dat$Col1=='QW1I1K5']
#[1] 34
Q[1,1,5]
#[1] 34

dat$Col2[dat$Col1=='QW4I3K8']
#[1] 38
Q[4,3,8]
#[1] 38

如果你想要 index连同值(value)观
library(reshape2)
d1 <- melt(Q)
head(d1,3)
#  Var1 Var2 Var3 value
#1    1    1    1    12
#2    2    1    1     9
#3    3    1    1    29

Q[1,1,1]
#[1] 12
Q[3,1,1]
#[1] 29

更新

假设,您的数据位于 order正如您在评论中描述的那样,将是 dat1
indx <- read.table(text=gsub('[^0-9]+', ' ', dat1$Col1), header=FALSE)
dat2 <- dat1[do.call(order, indx[,3:1]),]
Q1 <- array(dat2$Col2,dim=c(15,4,30))
Q1[1,1,2]
#[1] 20
dat2$Col2[dat2$Col1=='QW1I1K2']
#[1] 20

数据
Col1 <- do.call(paste,c(expand.grid('QW', 1:15, 'I', 1:4, 'K',1:30),
            list(sep='')))
set.seed(24)
dat <- data.frame(Col1, Col2=sample(1:40, 1800,replace=TRUE))

dat1 <- dat[order(as.numeric(gsub('[^0-9]+', '', dat$Col1))),]
row.names(dat1) <- NULL

关于arrays - 使用 R 将变量名称 "QW1I5K20"的值存储在数组元素 Q[1,5,20] 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27683984/

相关文章:

C 仅通过指针操作删除字符串中的前导和尾随空格

python - 如何从 python 中的元素列表中删除特殊字符?

javascript - JQUERY:将div ID和检查值存储到多维数组中

r - 使用 R 并行加速 Bootstrap

r - 在 lattice xyplot 中绘制每组面板数据的第一个点

r - 如何将列名作为参数传递给 dplyr 中的函数?

字符数组转整数

javascript - Onclick 事件 - 多次点击

javascript - 使用startsWith函数识别邮政编码的前三位数字

string - 如何匹配表示为 OsStr 的文件扩展名?