我有这样的数据:
+---+----+----+----+------+
| Su| Re | BM | CH | Eyes |
+---+----+----+----+------+
| 1 | 1 | . | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 1 | 2 | . | 0 |
| 0 | 1 | 3 | 1 | 1 |
| 1 | 2 | . | 0 | 0 |
| 0 | 2 | 2 | 0 | 1 |
| 1 | 2 | 3 | . | 1 |
| 0 | 2 | 4 | 1 | 1 |
+---+----+----+----+------+
我正在尝试根据此标准创建多个向量 Su = 1 且 Re = 1,2,3 .... ,Su = 1且Re = 1第一数据向量,Su = 1且Re = 3秒向量等等....我正在使用循环来迭代重新并基于 Su 和重新对数据集进行子集化。这是我的代码,它不起作用,我需要帮助找出我出错的地方。
library(foreign)
a <- read.dta(".....Data.dta")
for (i in 1:10)
{
b[i,]=subset(a, su==1 & re==i)
}
b
答案 0 :(得分:1)
您想要创建表示行的结构(或类)。
创建这些结构的向量。
现在创建索引表(std :: map),将排序条件作为第一个参数(键)以及向量(值)中行的指针或索引。
如果您打算以不同的顺序访问相同的记录,这是最好的方法。您可以按给定顺序访问索引表,而无需更改向量中的数据顺序。
这就是数据库如何处理表和索引。
答案 1 :(得分:0)
如果我理解你的问题,你可以像这样修改你的代码:
library(foreign)
a <- read.dta(".....Data.dta")
b <- list(rep(NA, 10))
for (i in 1:10)
{
b[[i]] <- subset(a, su==1 & re==i)
}
这将创建一个列表,其第i个条目是匹配的re == i的行。这就是你要追求的吗?