使用colnames和rownames用R中的列值填充矩阵
我有一个非常大的数据集,所以我想避免循环 我有三列数据: col1=表示为10000、10001、10002、10100、10101、10102的时间, 10200, 10201, 10202, 10300, ... (共18000次) col2=身份证号码1 2 3 4。。。(总共500个ID) col3=在特定时间与特定id关联的读取。0.1 0.5 0.6 0.7... 假设这叫做数据3 10000 1 0.1 1000110.5 10002110.6 1010010.7 10200 1 0.6(注意-缺少一些随机条目) 我想将其表示为一个矩阵(称为DataMatrix),但缺少数据,因此简单的重塑将不起作用。我想把丢失的数据作为NA条目 DataMatrix目前是一个包含500列和18000行的NA矩阵,其中行名和列名分别是times和id 1234 一万不,不,不,不 10001纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳 是否有一种方法可以让R遍历每一行Data3,通过将其放置在名称与Data3[,1]和Data3[,2]相关的矩阵的行和列中,用读取的Data3[,3]完成DataMatrix。但是没有环使用colnames和rownames用R中的列值填充矩阵,r,matrix,R,Matrix,我有一个非常大的数据集,所以我想避免循环 我有三列数据: col1=表示为10000、10001、10002、10100、10101、10102的时间, 10200, 10201, 10202, 10300, ... (共18000次) col2=身份证号码1 2 3 4。。。(总共500个ID) col3=在特定时间与特定id关联的读取。0.1 0.5 0.6 0.7... 假设这叫做数据3 10000 1 0.1 1000110.5 10002110.6 1010010.7 10200 1
多亏了你们这些聪明人 如果我理解正确:
Data3 <- data.frame(col1=10000:10499,
col2=1:500,
col3=round(runif(500),1))
library(reshape2)
DataMatrix <- dcast(Data3, col1~col2, value.var="col3")
DataMatrix[1:5, 1:5]
# col1 1 2 3 4
# 1 10000 0.4 NA NA NA
# 2 10001 NA 0.6 NA NA
# 3 10002 NA NA 0.9 NA
# 4 10003 NA NA NA 0.5
# 5 10004 NA NA NA NA
Data3这里有一个解决方案,可能的id值为1:10,时间值为1:20。首先,创建数据:
mx <- matrix(c(sample(1:20, 5), sample(1:10, 5), sample(1:50, 5)), ncol=3, dimnames=list(NULL, c("time", "id", "reading")))
times <- 1:20
ids <- 1:10
mx
# time id reading
# [1,] 4 3 25
# [2,] 5 4 9
# [3,] 9 7 45
# [4,] 18 1 40
# [5,] 11 8 28
这将产生(希望如此)期望的答案:
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] NA NA NA NA NA NA NA NA NA NA
# [2,] NA NA NA NA NA NA NA NA NA NA
# [3,] NA NA NA NA NA NA NA NA NA NA
# [4,] NA NA 25 NA NA NA NA NA NA NA
# [5,] NA NA NA 9 NA NA NA NA NA NA
# [6,] NA NA NA NA NA NA NA NA NA NA
# [7,] NA NA NA NA NA NA NA NA NA NA
# [8,] NA NA NA NA NA NA NA NA NA NA
# [9,] NA NA NA NA NA NA 45 NA NA NA
# [10,] NA NA NA NA NA NA NA NA NA NA
# [11,] NA NA NA NA NA NA NA 28 NA NA
# [12,] NA NA NA NA NA NA NA NA NA NA
# [13,] NA NA NA NA NA NA NA NA NA NA
# [14,] NA NA NA NA NA NA NA NA NA NA
# [15,] NA NA NA NA NA NA NA NA NA NA
# [16,] NA NA NA NA NA NA NA NA NA NA
# [17,] NA NA NA NA NA NA NA NA NA NA
# [18,] 40 NA NA NA NA NA NA NA NA NA
# [19,] NA NA NA NA NA NA NA NA NA NA
# [20,] NA NA NA NA NA NA NA NA NA NA
为什么您会说“缺少数据,所以简单的重塑不起作用”?你试过了吗?解决方案中有什么不起作用?如果你提供一个(小的)可重复的例子来演示你期望遇到的条件/问题,你就更有可能得到有意义的帮助;DataMatrix谢谢阿南达-你说得对-玩游戏绝对是前进的方向。我想可能有一些匹配或查找功能,我不知道。缺少的数据意味着数据3的长度不是18000*500,而是更短。因此,重塑灾难。我认为,如果您的数据没有所有可能的col1和col2值,这可能无法完全起作用。如果是的话,会的。谢谢你的卢卡和布罗迪格。我现在正在尝试,非常兴奋!祈祷:)这真是太棒了!非常感谢你们这些美丽的星星****@用户3173922,您应该将适合您的答案标记为已回答。德克萨斯州
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] NA NA NA NA NA NA NA NA NA NA
# [2,] NA NA NA NA NA NA NA NA NA NA
# [3,] NA NA NA NA NA NA NA NA NA NA
# [4,] NA NA 25 NA NA NA NA NA NA NA
# [5,] NA NA NA 9 NA NA NA NA NA NA
# [6,] NA NA NA NA NA NA NA NA NA NA
# [7,] NA NA NA NA NA NA NA NA NA NA
# [8,] NA NA NA NA NA NA NA NA NA NA
# [9,] NA NA NA NA NA NA 45 NA NA NA
# [10,] NA NA NA NA NA NA NA NA NA NA
# [11,] NA NA NA NA NA NA NA 28 NA NA
# [12,] NA NA NA NA NA NA NA NA NA NA
# [13,] NA NA NA NA NA NA NA NA NA NA
# [14,] NA NA NA NA NA NA NA NA NA NA
# [15,] NA NA NA NA NA NA NA NA NA NA
# [16,] NA NA NA NA NA NA NA NA NA NA
# [17,] NA NA NA NA NA NA NA NA NA NA
# [18,] 40 NA NA NA NA NA NA NA NA NA
# [19,] NA NA NA NA NA NA NA NA NA NA
# [20,] NA NA NA NA NA NA NA NA NA NA