将列中的分隔数据扩展为多个逻辑列

时间:2017-06-23 08:07:38

标签: r

我在data.frame中有一个列,其中包含来自一系列复选框的数据。当我收到数据时,数据会被推入一个看起来像这样的列:

choice1|choice3|choice6

复制: my.data <- data.frame(checkboxes="choice1|choice3|choice6", stringsAsFactors = FALSE)

有一些离散数量的此类值由管道分隔。

我想将这些数据转换为一系列以可能的选择命名的逻辑列,如下所示:

choice1 choice2 choice3 choice4 choice5 choice6 
TRUE    FALSE   TRUE    FALSE   FALSE   TRUE

我试过separate()但它不太适合我的用例。我的用例似乎是重塑和separate()的混合。

我如何在R?

中完成此任务

2 个答案:

答案 0 :(得分:2)

另一种可能性,同样的精神:

parsed_checkboxes <- strsplit(my.data$checkboxes, "|", fixed = TRUE)
as.data.frame(lapply(
  setNames(nm = paste0("choice", 1:6)),
  function(choice) vapply(parsed_checkboxes, "%in%", logical(1), x = choice)
))

##   choice1 choice2 choice3 choice4 choice5 choice6
## 1    TRUE   FALSE    TRUE   FALSE   FALSE    TRUE

答案 1 :(得分:1)

你想使用strsplit和apply函数的组合,这是一种方法:

private final Activity activity;

@Inject
public Navigator(Activity activity) {
    this.activity = activity;
}