【发布时间】:2018-06-20 20:00:30
【问题描述】:
首先,对于标题含糊不清,我深表歉意。我有一个数据集,其中包含对某个变量 X 编码为 0 和 1 的二分值。v001 是主题标识符,从 v1pc10le8 到 v9pc10le8 的值是九个中每个 X 的值访问。此外,firstpc10 和 lastpc10 分别表示 X 的第一个(基线)和最后一个测量值。
v001 firstpc10 lastpc10 v1pc10le8 v2pc10le8 v3pc10le8 v4pc10le8 v5pc10le8 v6pc10le8 v7pc10le8 v8pc10le8 v9pc10le8
1473 28084 0 0 0 <NA> 0 <NA> <NA> 0 0 <NA> <NA>
1474 28089 0 0 <NA> <NA> <NA> 0 <NA> 0 <NA> <NA> <NA>
1475 28102 0 1 <NA> <NA> 0 0 0 0 1 <NA> <NA>
1476 28103 0 1 <NA> <NA> <NA> 0 0 0 0 1 1
1477 28119 0 0 <NA> <NA> <NA> 0 <NA> 0 0 0 <NA>
1478 28184 0 1 <NA> <NA> 0 <NA> <NA> 0 <NA> <NA> 1
1479 28202 1 1 <NA> <NA> 1 <NA> 0 0 0 1 1
1480 28211 0 0 0 <NA> 0 0 <NA> <NA> <NA> <NA> <NA>
1481 28212 0 1 0 <NA> <NA> 1 <NA> <NA> <NA> <NA> <NA>
1482 28213 0 0 <NA> <NA> 0 <NA> <NA> 0 <NA> <NA> <NA>
1483 28214 0 0 <NA> <NA> <NA> 0 0 0 <NA> 1 0
1484 28215 0 0 <NA> <NA> <NA> 0 <NA> 0 0 0 0
1485 28232 0 1 <NA> <NA> 0 <NA> 0 1 <NA> <NA> <NA>
1486 28244 1 1 1 <NA> <NA> <NA> 0 0 0 0 1
1487 28258 0 1 <NA> <NA> <NA> 0 <NA> 0 1 <NA> 1
1488 28281 0 1 <NA> <NA> <NA> 0 0 0 1 <NA> <NA>
1489 28303 0 0 0 <NA> <NA> <NA> <NA> 0 0 0 <NA>
1490 28337 0 1 <NA> <NA> 0 <NA> <NA> 0 <NA> 1 <NA>
1491 28355 1 1 <NA> <NA> 1 <NA> 0 <NA> 0 1 <NA>
1492 29983 0 0 <NA> <NA> <NA> 0 0 <NA> 0 0 0
我想忽略所有NA 并计算一个名为“change”的新变量,它具有以下值:
1 - 如果受试者在基线时为 0 并且始终保持为 0
2 - 如果受试者在基线时为 1 并且始终保持为 1
3 - 如果受试者在基线时为 1 并更改为 0(并且始终保持为 0)
4 - 如果受试者在基线时为 0 并更改为 1(并且始终保持为 1)
5 - 如果受试者在 0 和 1 的值之间波动而没有趋势(例如受试者 #28214) - 这些受试者不属于上述 4 个类别
这是我希望看到的输出:
v001 change
1473 28084 1
1474 28089 1
1475 28102 4
1476 28103 4
1477 28119 1
1478 28184 4
1479 28202 5
1480 28211 1
1481 28212 4
1482 28213 1
1483 28214 5
1484 28215 1
1485 28232 4
1486 28244 5
1487 28258 4
1488 28281 4
1489 28303 1
1490 28337 4
1491 28355 5
1492 29983 1
我尝试使用 SPSS 和 R 来做到这一点,但我遇到了巨大的困难,我将非常感谢任何帮助。 (我在下面包含了来自 R 的 dput 输出)。
谢谢!
structure(list(v001 = c(28084, 28089, 28102, 28103, 28119, 28184,
28202, 28211, 28212, 28213, 28214, 28215, 28232, 28244, 28258,
28281, 28303, 28337, 28355, 29983), firstpc10 = c(0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0), lastpc10 = c(0,
0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0), v1pc10le8 = c(0,
NA, NA, NA, NA, NA, NA, 0, 0, NA, NA, NA, NA, 1, NA, NA, 0, NA,
NA, NA), v2pc10le8 = c(NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_), v3pc10le8 = c(0, NA, 0, NA, NA, 0, 1, 0,
NA, 0, NA, NA, 0, NA, NA, NA, NA, 0, 1, NA), v4pc10le8 = c(NA,
0, 0, 0, 0, NA, NA, 0, 1, NA, 0, 0, NA, NA, 0, 0, NA, NA, NA,
0), v5pc10le8 = c(NA, NA, 0, 0, NA, NA, 0, NA, NA, NA, 0, NA,
0, 0, NA, 0, NA, NA, 0, 0), v6pc10le8 = c(0, 0, 0, 0, 0, 0, 0,
NA, NA, 0, 0, 0, 1, 0, 0, 0, 0, 0, NA, NA), v7pc10le8 = c(0,
NA, 1, 0, 0, NA, 0, NA, NA, NA, NA, 0, NA, 0, 1, 1, 0, NA, 0,
0), v8pc10le8 = c(NA, NA, NA, 1, 0, NA, 1, NA, NA, NA, 1, 0,
NA, 0, NA, NA, 0, 1, 1, 0), v9pc10le8 = c(NA, NA, NA, 1, NA,
1, 1, NA, NA, NA, 0, 0, NA, 1, 1, NA, NA, NA, NA, 0)), .Names = c("v001",
"firstpc10", "lastpc10", "v1pc10le8", "v2pc10le8", "v3pc10le8",
"v4pc10le8", "v5pc10le8", "v6pc10le8", "v7pc10le8", "v8pc10le8",
"v9pc10le8"), row.names = 1473:1492, class = "data.frame")
【问题讨论】:
-
欢迎来到 Stack Overflow。感谢您添加数据的
dput。添加确切的预期输出也很有帮助。 -
@Deena 谢谢你的评论!我已经更新了问题并添加了我希望看到的输出。
-
第四行的结果怎么是1?
-
那应该是
4,我已经更正了。谢谢!
标签: r loops variables if-statement