【发布时间】:2020-12-25 10:26:24
【问题描述】:
我正在处理一个适合我的研究的大型数据集。假设我有 4 个观察值(记录)和 5 列如下:
x <- data.frame("ID" = c(1, 2, 3, 4),
"group1" = c("A", NA, "B", NA),
"group2" = c("B", "A", NA, "C"),
"hours1" = c(3, NA, 5, NA),
"hours2" = c(1, 2, NA, 5))
> x
ID group1 group2 hours1 hours2
1 A B 3 1
2 <NA> A NA 2
3 B <NA> 5 NA
4 <NA> C NA 5
“group1”和“group2”是参考列,包含A、B和C的字符值,最后两列“hours1”和“hours2”显然是数字表示小时。
“group1”列对应“hours1”列;同样,“group2”对应“hours 2”。
我想根据与“hours1”和“hours2”的值匹配的参考列的值A、B和C创建多个列,如下所示:
ID group1 group2 hours1 hours2 A B C
1 A B 3 1 3 1 NA
2 <NA> A NA 2 2 NA NA
3 B <NA> 5 NA NA 5 NA
4 <NA> C NA 5 NA NA 5
例如,ID 1 在“group1”中有 A,对应于在“A”列下的“hours1”中的 3。 ID 3 在“group1”中有 B,对应于在“B”列下的“hours1”中的 5。在“组 2”中,ID 4 有 C,对应于“C”列下的 hours2 中的 5。
有没有办法使用 R 来做到这一点?
【问题讨论】: