R中具有多个构成键的字段的传播函数
Spread function in R with multiple fields which constitute the key
我正在努力以这种方式改造我的 table,以便我可以加入另一个 table。这是我的初始 table 示例:
df1 <- data.frame(ID = c(1,1,1,2,2,2,3,3,3),
date=c('2021-11-01', '2021-11-01', '2021-11-02','2021-11-01',
'2021-11-01', '2021-11-02','2021-11-01', '2021-11-01', '2021-11-02'
),
event_name = c('a', 'a', 'c', 'a', 'b', 'b','a', 'b', 'c'),
Time_duration = c(1, 3, 5, 9, 2, 4, 1, 6, 8))
这是我希望数据在传播后如何看待的示例:
df2 <- data.frame(ID = c(1,1, 2,2, 3,3),
date=c('2021-11-01', '2021-11-02',
'2021-11-01', '2021-11-02',
'2021-11-01', '2021-11-02'
),
event_A_duration_sum = c(4, 0,
9, 0,
1,0),
event_B_duration = c(0, 0,
2, 4,
6,0),
event_C_duration = c(0, 5,
0, 0,
0,8))
在我的期末考试 table 中,我需要按 (ID, Date) 对数据进行分组;为我的最终 table 标识的唯一标识将是 ID 和日期。例如,每个 ID 和日期可以有多个相同类型的事件。
我希望这是有道理的。我应该连接我的标识符然后将它们拆分回去吗?或者有没有更好的方法使用 DPLYR 来做到这一点?
干杯,感谢任何帮助。
library(data.table)
dcast(data.table(df1),
ID + date ~ event_name,value.var = 'Time_duration',
fun.aggregate = sum)
Key: <ID, date>
ID date a b c
<num> <char> <num> <num> <num>
1: 1 2021-11-01 4 0 0
2: 1 2021-11-02 0 0 5
3: 2 2021-11-01 9 2 0
4: 2 2021-11-02 0 4 0
5: 3 2021-11-01 1 6 0
6: 3 2021-11-02 0 0 8
我正在努力以这种方式改造我的 table,以便我可以加入另一个 table。这是我的初始 table 示例:
df1 <- data.frame(ID = c(1,1,1,2,2,2,3,3,3),
date=c('2021-11-01', '2021-11-01', '2021-11-02','2021-11-01',
'2021-11-01', '2021-11-02','2021-11-01', '2021-11-01', '2021-11-02'
),
event_name = c('a', 'a', 'c', 'a', 'b', 'b','a', 'b', 'c'),
Time_duration = c(1, 3, 5, 9, 2, 4, 1, 6, 8))
这是我希望数据在传播后如何看待的示例:
df2 <- data.frame(ID = c(1,1, 2,2, 3,3),
date=c('2021-11-01', '2021-11-02',
'2021-11-01', '2021-11-02',
'2021-11-01', '2021-11-02'
),
event_A_duration_sum = c(4, 0,
9, 0,
1,0),
event_B_duration = c(0, 0,
2, 4,
6,0),
event_C_duration = c(0, 5,
0, 0,
0,8))
在我的期末考试 table 中,我需要按 (ID, Date) 对数据进行分组;为我的最终 table 标识的唯一标识将是 ID 和日期。例如,每个 ID 和日期可以有多个相同类型的事件。
我希望这是有道理的。我应该连接我的标识符然后将它们拆分回去吗?或者有没有更好的方法使用 DPLYR 来做到这一点?
干杯,感谢任何帮助。
library(data.table)
dcast(data.table(df1),
ID + date ~ event_name,value.var = 'Time_duration',
fun.aggregate = sum)
Key: <ID, date>
ID date a b c
<num> <char> <num> <num> <num>
1: 1 2021-11-01 4 0 0
2: 1 2021-11-02 0 0 5
3: 2 2021-11-01 9 2 0
4: 2 2021-11-02 0 4 0
5: 3 2021-11-01 1 6 0
6: 3 2021-11-02 0 0 8