我有我的数据帧:移调data.frame [R
Name Time Event
Serg 15 Log1
Nate 15 Log2
Serg 10 Log3
Nate 9 Log1
Nate 20 Log5
而且我想通过时间time
这样的移调它为每一个Name
:
Name 1 2 3
Serg Log3 Log1 NA
Nate Log1 Log2 Log5
希望我解释清楚!谢谢
我有我的数据帧:移调data.frame [R
Name Time Event
Serg 15 Log1
Nate 15 Log2
Serg 10 Log3
Nate 9 Log1
Nate 20 Log5
而且我想通过时间time
这样的移调它为每一个Name
:
Name 1 2 3
Serg Log3 Log1 NA
Nate Log1 Log2 Log5
希望我解释清楚!谢谢
我们可以从data.table
使用dcast
。通过创建一个序列ID(rowid
- from data.table
做'Name'变量),将'data.frame'转换为'data.table'(setDT(df1)
),然后将dcast
数据集转换为'wide'格式,公式,并指定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>
在desider输出
,名为SERG意外或做你挑'Log3' asthe第一排值故意? – sgp667
没关系我看到模式 – sgp667