gpt4 book ai didi

r - 转置 data.frame r

转载 作者:行者123 更新时间:2023-12-04 11:56:56 34 4
gpt4 key购买 nike

我有我的数据框:

Name  Time  Event
Serg 15 Log1
Nate 15 Log2
Serg 10 Log3
Nate 9 Log1
Nate 20 Log5

我想按时间对每个 Nametime 进行转置,如下所示:

Name 1     2     3
Serg Log3 Log1 NA
Nate Log1 Log2 Log5

希望我解释清楚!谢谢

最佳答案

我们可以使用 data.table 中的 dcast。将 'data.frame' 转换为 'data.table' (setDT(df1)),然后通过创建序列 ID (dcast 将数据集转换为 'wide' 格式 (rowid - 来自 data.table 为“Name”变量执行此操作),将其传递给公式,并将 value.var 指定为“事件”

library(data.table)
dcast(setDT(df1)[order(Name, Time)], Name ~ rowid(Name), value.var = "Event")
# Name 1 2 3
#1: Nate Log1 Log2 Log5
#2: Serg Log3 Log1 NA

或者使用tidyverse

library(dplyr)
library(tidyr)
df1 %>%
group_by(Name) %>%
arrange(Name, Time) %>%
mutate(ind = row_number()) %>%
select(-Time) %>%
spread(ind, Event)
# Name `1` `2` `3`
#* <chr> <chr> <chr> <chr>
#1 Nate Log1 Log2 Log5
#2 Serg Log3 Log1 <NA>

关于r - 转置 data.frame r,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41815338/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com