【发布时间】:2021-02-15 14:19:18
【问题描述】:
我有一个看起来像 (A) 的数据集,我正在尝试获取 (B):
#(A)
event <- c('A', 'A', 'A', 'B', 'B', 'C', 'D', 'D', 'D')
person <- c('Ann', 'Sally', 'Ryan', 'Ann', 'Ryan', 'Sally', 'Ann', 'Sally', 'Ryan')
birthday <- c('1990-10-10', NA, NA, NA, '1985-01-01', NA, '1990-10-10', '1950-04-02', NA)
data <- data.frame(event, person, birthday)
#(B)
person <- c('Ann', 'Sally', 'Ryan')
A <- c(1, 1, 1)
B <- c(1, 0, 1)
C <- c(0, 0, 1)
D <- c(1, 1, 1)
birthday <- c('1990-10-10', '1950-04-02', '1985-01-01')
data <- data.frame(person, A, B, C, D, birthday)
基本上,我有一个活动的注册列表,可以看到参加各种活动的人。我想获取所有独特人员的列表,其中包含他们参加/未参加的活动的列。我还从一些事件中获得了个人资料数据,但有些数据比其他事件更多 - 所以我还想保留填写最多的数据(即无法从事件 D 中识别 Ryan 的生日,但可以从事件 B 中识别)。
我已经尝试查找许多不同的东西,但是对于我是否应该关注重塑、dcast、传播/收集......对于 R 来说是新手,因此不胜感激!
编辑:附加 q - 如果有人参加一个活动,而不是表示 1/0,如果多个活动属于同一类别,您将如何确定某人参加该活动类别的次数?例如,我在数据集中也会有名为 A1、A2 和 A3 的事件。决赛桌仍然有一个名为 A 的列,但不是只有 1/0,如果此人未参加任何 A 活动,则为 0,如果此人参加 1、2 或 3 次 A 活动,则为 1、2 或 3 .
【问题讨论】:
标签: r reshape tidyr spread dcast