R 通过对循环中的数据进行子集划分来创建向量
我有这样的数据:R 通过对循环中的数据进行子集划分来创建向量,r,R,我有这样的数据: +---+----+----+----+------+ | 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 |
+---+----+----+----+------+
| 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 |
+---+----+----+----+------+
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)
}
我正试图根据这个标准创建多个向量
Su=1和Re=1,2,3….,Su=1和Re=1第一个数据向量,Su=1和Re=3第二个向量,依此类推……我正在使用一个循环来迭代Re并基于Su和Re对数据集进行子集设置。这是我下面的代码,它不工作,我需要帮助找出我哪里出了问题
library(foreign)
a <- read.dta(".....Data.dta")
for (i in 1:10)
{
b[i,]=subset(a, su==1 & re==i)
}
b
库(外文)
a您希望创建一个表示行的结构(或类)
创建这些结构的向量
现在创建索引表(std::map),将排序条件作为第一个参数(键)和向量中行的指针或索引(值)
如果要以不同的顺序访问相同的记录,这是最好的方法。您可以按给定顺序访问索引表,而无需更改向量中数据的顺序
这就是数据库处理表和索引的方式。如果我正确理解您的问题,您可以这样修改代码:
+---+----+----+----+------+
| 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 |
+---+----+----+----+------+
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)
}
库(外文)
为什么这个标记为C++?气味,就像一个数据库,使用这个数据库。(1)在你的示例数据中,你有“代码> SU<代码/代码>和<代码> Re/COD>,在你的代码中,你有<代码> SU/COD>和<代码> Re>代码>。(2) 当你说它不起作用时,到底发生了什么?您是否收到错误消息?(3) 有关如何提出一个好的重复性问题的信息,请参见。完美的丹尼斯,这太棒了,你的建议奏效了。非常感谢。@bison2178:如果您喜欢这个答案或认为它有帮助,请单击答案旁边的绿色复选标记。