【发布时间】:2018-07-02 23:08:31
【问题描述】:
我无法重新安排我的数据框来组织团队成员从头到尾加入团队的日期。但是,我的数据需要跨行而不是跨列排列。
例如,我有 6 列,每列包含团队成员加入团队的日期。一个团队按行分布在 6 列中。但是,原始数据可能会显示团队成员 3 在团队成员 1 之前加入。
团队规模不同,最少 1 人,最多 6 人。在下面的示例中,第一队是第 1 行的两个人(e1,e2),第二个队是第 2 行的三个人(e1,e2,e3),依此类推。
我的原始数据示例:
e1 <- c("2015-09-21", "2014-01-25", "2014-11-06")
e2 <- c("2015-10-13", "2014-01-25", "2014-11-06")
e3 <- c(NA, "2014-01-25", "2014-09-24")
e4 <- c(NA, NA, NA)
e5 <- c(NA, NA, NA)
e6 <- c(NA, NA, NA)
reg_dates_df <- data.frame (e1, e2, e3, e4, e5, e6)
为了解决这个问题,我尝试了以下代码:
reg_dates_list <- t(apply(reg_dates_df, 1, sort))
reg_dates_list <- t(reg_dates_list)
reg_dates_ordered <- rbindlist(lapply(reg_dates_list, as.data.frame.list), fill = TRUE)
不幸的是,它以相同的方式返回数据帧,而不是保持使用 sort 命令产生的固定顺序。我不确定如何修复矩阵中的新排序向量,以便在转换回 DF 时它们不会变回原来的位置。
我希望数据框看起来像这样(请参阅第三行的更改),其中包含第一个加入的人的日期在 e1 中,等等。
e1 <- c("2015-09-21", "2014-01-25", "2014-09-24")
e2 <- c("2015-10-13", "2014-01-25", "2014-11-06")
e3 <- c(NA, "2014-01-25", "2014-11-06")
e4 <- c(NA, NA, NA)
e5 <- c(NA, NA, NA)
e6 <- c(NA, NA, NA)
reg_dates_df_ordered2 <- data.frame (e1, e2, e3, e4, e5, e6)
感谢您的帮助!
【问题讨论】: