这是我的数据:
name = c(letters[1:10], letters[1:10])
Yr <- rep(1:2, each = length (name))
P1 = c(NA, NA,NA, NA, "a", "a", "a", "d", "d", "d", NA, NA,NA,
NA, "a", "a", "a", "d", "d", "d")
P2 = c(NA, NA,NA, NA, "b", "b", "b", "b", "b", "c",
NA, NA,NA, NA, "b", "b", "b", "b", "b", "c")
myd <- data.frame (Yr, name, P1, P2)
对于除 P1 和 P2 之外的所有唯一值,我想创建名为 a 和 b 的新变量,然后在 P1 和 P2 列中对它们的存在或不存在进行评分。就像下面这样:
Yr name P1 P2 a b c d
1 a <NA> <NA> NA NA NA NA
1 b <NA> <NA> NA NA NA NA
1 c <NA> <NA> NA NA NA NA
1 d <NA> <NA> NA NA NA NA
1 e a b 1 1 0 0
1 f a b 1 1 0 0
1 g a b 1 1 0 0
1 h d b 0 1 0 1
1 i d b 0 1 0 1
1 j d c 0 0 1 1
(1)新列- 新列是 P1 和 P2 列中的唯一值(缺失值除外)
(2)新列的值- 例如,对于“a”名称(主题)的情况,P1 和 P2 都是 NA。对于“e”,名称 P1 为“a”,P2 为“b”,因此“a”和“b”将得到 1,其他所有内容为 0,同样基于 P1 或 P2 的存在,列a、b、c、d 评分。
完整的预期输出:
Yr name P1 P2 a b c d
1 a <NA> <NA> NA NA NA NA
1 b <NA> <NA> NA NA NA NA
1 c <NA> <NA> NA NA NA NA
1 d <NA> <NA> NA NA NA NA
1 e a b 1 1 0 0
1 f a b 1 1 0 0
1 g a b 1 1 0 0
1 h d b 0 1 0 1
1 i d b 0 1 0 1
1 j d c 0 0 1 1
1 a <NA> <NA> NA NA NA NA
1 b <NA> <NA> NA NA NA NA
1 c <NA> <NA> NA NA NA NA
1 d <NA> <NA> NA NA NA NA
1 e a b 1 1 0 0
1 f a b 1 1 0 0
1 g a b 1 1 0 0
1 h d b 0 1 0 1
1 i d b 0 1 0 1
1 j d c 0 0 1 1
2 a <NA> <NA> NA NA NA NA
2 b <NA> <NA> NA NA NA NA
2 c <NA> <NA> NA NA NA NA
2 d <NA> <NA> NA NA NA NA
2 e a b 1 1 0 0
2 f a b 1 1 0 0
2 g a b 1 1 0 0
2 h d b 0 1 0 1
2 i d b 0 1 0 1
2 j d c 0 0 1 1
2 a <NA> <NA> NA NA NA NA
2 b <NA> <NA> NA NA NA NA
2 c <NA> <NA> NA NA NA NA
2 d <NA> <NA> NA NA NA NA
2 e a b 1 1 0 0
2 f a b 1 1 0 0
2 g a b 1 1 0 0
2 h d b 0 1 0 1
2 i d b 0 1 0 1
2 j d c 0 0 1 1