在dplyr中按条件(或采用先前的值)连续移动右单元格内容

时间:2018-06-29 10:31:49

标签: r dplyr

在冗长的文本处理过程结束时,我以所需的数据帧结束。 这是一个伪造的可复制样本:

df <- data.frame("kind" = c("animal", "person", "machine", "plant),
                 "action" = c("breath", "breath", "4.02.2008", "grow"),
                 "date" = c("14.02.2008", "3.01.2008", "factory", ""), 
                 "location" = c("stable", "house", "", "greenhouse"))

   kind       action       date        location
1  animal     breath       4.02.2008   stable
2  person     breath       3.01.2008   house
3  machine    14.07.2008   factory 
4  plant      grow                     greenhouse

如您所见,有时无法检测到所有文本,所以我以空字段结尾,使一些行将内容(或多个)单元“移动”到左侧。但是,更糟糕的是,有时空单元格还可以(第四行)

如何以酷炫的dplyr方式将此类行中的单元格内容右移?

我认为为此必须有一个特定的命令(shift,move,next,prev .. ??)

到目前为止已经尝试过,但是没有真正起作用(警告仅使用第一个元素),而不是简洁的代码:

df %>% 
  mutate(location= ifelse(grepl(action, pattern = "[0-9]\\."), date, location)) %>%
  mutate(date = ifelse(grepl(action, pattern = "[0-9]\\."), action, date))

请考虑到有十列以上,并且空单元格不是从同一位置开始,有时空单元格必须保持为空。

0 个答案:

没有答案