r - 如何在我的数据框中转置一列以保持其他所有内容相同
问题描述
我正在设置我的数据框进行分析。但是,这是我第一次需要条件转置。
我有一个如下数据框:
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_date1
,Booking_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
我尝试过使用melt
,spread
但我不知道使用它。如果有人可以帮助我,那就太好了。
解决方案
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
推荐阅读
- css - 情感不会覆盖 Material UI 默认值
- reactjs - React - Material UI 测试 TypeError:无法读取未定义的属性“获取”
- amazon-web-services - 如何在不使用托管 UI 的情况下使用 Postman 使用 AWS cognito 注册新用户
- c++ - 有没有办法调用对象的重写基类方法?
- ios - Xcode 12.4 中的模拟器很慢
- javascript - 需要帮助来跟踪更高或更低 HTML 的猜测
- javascript - Reactstrap 表头和表体不匹配
- openlayers - openweathermaps 天气图图层未在 openlayers 上正确显示
- php - Xdebug with VSCode for PHP CLI 不附加
- reactjs - 使用 react-csv 将数据导出为 csv