【发布时间】:2016-06-13 18:22:19
【问题描述】:
这是我的数据框。
library(data.table)
dt <- fread('
Name Video Webinar Meeting Conference Level NextStep
John 1 0 0 0 1 Webinar,Meeting,Conference
John 1 1 0 0 1 Meeting,Conference
John 1 1 1 0 2 Conference
Tom 0 0 1 0 1 Webinar,Conference,Video
Tom 0 0 1 1 2 Webinar,Video
Kyle 0 0 0 1 2 Webinar,Meeting,Video
')
我正在通过这样做来创建下一步列
dt[, nextstep := paste0(names(.SD)[.SD==0], collapse = ','), 1:nrow(DT), .SDcols = 2:5][]
根据这里的解决方案Making a character string with column names with zero values
现在我想根据“级别”字段更改元素在下一步列中的显示顺序。例如,如果是 1 级,我希望会议在网络研讨会和会议之前出现。如果是第 2 级,我希望视频始终显示在最后。这是我的尝试。
dt<-dt[, NextStep := ifelse(Level1=="Level0",
(paste0(names(.SD)[.SD==0], collapse = ';'), 1:nrow(dt), .SDcols = c(5,2,3,4)),
ifelse(EngagementLevel1=="Level2",
(paste0(names(.SD)[.SD==0], collapse = ';'), 1:nrow(dt), .SDcols = c(3,4,5,2))))]
我只是想根据“级别”字段对“下一步”字段中的元素重新排序。衷心感谢您的帮助!
【问题讨论】:
标签: r if-statement data.table dplyr