首页 > 解决方案 > 如何在我的数据框中转置一列以保持其他所有内容相同

问题描述

我正在设置我的数据框进行分析。但是,这是我第一次需要条件转置。

我有一个如下数据框:

 F_Name  L_Name id Booking_date flag
1    Alon Trecker  1   10/16/2018    A
2    Alon Trecker  1    1/15/2019    B
3 Tenzing   Omaho  2    8/29/2018    A
4 Tenzing   Omaho  2   12/26/2018    A
5  Sheryl   Stark NA   11/20/2018    A

我想拆分 Booking_date 列,以便每个人或每条记录都有两个预订日期Booking_date1Booking_date2第一列的值将是该人的“Booking_date”列的第一个日期,第二个是第二个入口。但是,如果此人没有第二个条目,我可以在 Booking_date2 列上为他留下 NA 值。

像这样的东西

F_Name  L_Name id Booking_date1 Booking_date2 flag1 flag2
Alon    Trecker 1    10/16/2018     1/15/2019     A     B
Tenzing  Omaho  2     8/29/2018    12/26/2018     A     A
Sheryl   Stark  NA   11/20/2018            NA     A    NA 

我尝试过使用meltspread但我不知道使用它。如果有人可以帮助我,那就太好了。

标签: rdata-manipulation

解决方案


library(data.table)
setDT(df)
df[, date_id := 1:.N, by = .(id)]
dcast(df, ... ~ date_id, value.var = c("Booking_date", "flag"))
#     F_Name  L_Name id Booking_date_1 Booking_date_2 flag_1 flag_2
# 1:    Alon Trecker  1     10/16/2018      1/15/2019      A      B
# 2:  Sheryl   Stark NA     11/20/2018           <NA>      A   <NA>
# 3: Tenzing   Omaho  2      8/29/2018     12/26/2018      A      A

推荐阅读