使用管道有条件地分离()

奇怪的循环

考虑一些像这样的多语言词典数据:

df <- structure(list(tra = c("1. authority, responsibility, dominion / autorité, responsabilité, pouvoir", "2. ability / capacité", "half, part, some / moitié, partie d'un tout", "do, make, operate, execute / faire, opérer, exécuter", "do (etc.) f.o.b. / faire (etc.) pour soi", "1. manière de réveiller. 2. manière de redonner la vie à un mort", "1. qui peut réveiller. 2. qui est capable de redonner la vie à un mort", "A. manière de respirer / respiration. B. vie", "A. manière de respirer / respiration. B. vie", "A. respirer. B. réveiller. C. être libre"), language = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), .Label = c("Afar", "Kabiye" ), class = "factor"), metalanguage = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), .Label = c("en/fr", "fr"), class = "factor")), .Names = c("tra", "language", "metalanguage"), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"))

tra字段有时包含以 分隔的英语和法语翻译/,有时仅包含在该metalanguage字段中记录的法语这是我想要完成的:

  • 保持tra列完好无损并添加两个额外的列tra_frtra_en
  • 如果metalanguage == "en/fr", use单独()to split translation in totra_en andtra_fr`
  • 如果metalanguage == "fr", filltra_fr withtra`
  • 将所有这些作为更大的管道 dplyr 动词序列的一部分来完成。

我首先选择了separate(tra,c("tra_en","tra_fr"), " / ", remove=F),但后来我发现“/”也用于一些仅限法语的翻译(是的,因为数据不一致)。所以我需要一些方法来根据领域有条件地应用separate()mutate()动词metalanguage我怎样才能在管道中做到这一点?

(我已经研究了几个关于将条件和 if_else() 与管道 dplyr 动词一起使用的先前问题,但到目前为止我还没有成功地将 mutate() 所描述的内容应用于 separate()。)

西多姆

您可以使用group_by %>% do, 并且对于每个组,相应地检查metalanguage分开

df %>% group_by(metalanguage) %>% do({
    if(.$metalanguage[1] == "en/fr") 
        separate(., tra, c("tra_en", "tra_fr"), " / ", remove=FALSE) 
    else 
        mutate(., tra_fr = tra)
}) %>% as.data.frame()

#                                                                          tra                                 tra_en
#1  1. authority, responsibility, dominion / autorité, responsabilité, pouvoir 1. authority, responsibility, dominion
#2                                                       2. ability / capacité                             2. ability
#3                                 half, part, some / moitié, partie d'un tout                       half, part, some
#4                        do, make, operate, execute / faire, opérer, exécuter             do, make, operate, execute
#5                                    do (etc.) f.o.b. / faire (etc.) pour soi                       do (etc.) f.o.b.
#6            1. manière de réveiller. 2. manière de redonner la vie à un mort                                   <NA>
#7      1. qui peut réveiller. 2. qui est capable de redonner la vie à un mort                                   <NA>
#8                                A. manière de respirer / respiration. B. vie                                   <NA>
#9                                A. manière de respirer / respiration. B. vie                                   <NA>
#10                                   A. respirer. B. réveiller. C. être libre                                   <NA>
#                                                                   tra_fr language metalanguage
#1                                       autorité, responsabilité, pouvoir     Afar        en/fr
#2                                                                capacité     Afar        en/fr
#3                                                moitié, partie d'un tout     Afar        en/fr
#4                                                 faire, opérer, exécuter     Afar        en/fr
#5                                                   faire (etc.) pour soi     Afar        en/fr
#6        1. manière de réveiller. 2. manière de redonner la vie à un mort   Kabiye           fr
#7  1. qui peut réveiller. 2. qui est capable de redonner la vie à un mort   Kabiye           fr
#8                            A. manière de respirer / respiration. B. vie   Kabiye           fr
#9                            A. manière de respirer / respiration. B. vie   Kabiye           fr
#10                               A. respirer. B. réveiller. C. être libre   Kabiye           fr

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在PHP中有条件地使用特征

来自分类Dev

AngularJS-有条件地使用属性指令

来自分类Dev

使用AngularJS有条件地更改CSS

来自分类Dev

使用jQuery有条件地设置属性

来自分类Dev

使用TSQL有条件地创建存储过程

来自分类Dev

如何有条件地正确使用jQuery replaceWith?

来自分类Dev

如何使autoconf有条件地使用系统扩展?

来自分类Dev

可以有条件地使用“ with”语句吗?

来自分类Dev

如何有条件地使用芹菜做任务?

来自分类Dev

如何有条件地使用Test :: Simple?

来自分类Dev

使用Javascript有条件地过滤对象数组

来自分类Dev

使用Akka流有条件地跳过流

来自分类Dev

使用Aurelia有条件地显示Element

来自分类Dev

有条件地使用WP8.1功能

来自分类Dev

使用Futurebuilder有条件地渲染小部件

来自分类Dev

如何有条件地使用SQL通配符?

来自分类Dev

如何使用Ansible有条件地复制文件?

来自分类Dev

使用dplyr有条件地设置列名称

来自分类Dev

使用RXJS有条件地向管道添加操作

来自分类Dev

如何使用管道有条件地显示innerHTML值

来自分类Dev

如何使用vim有条件地替换数字

来自分类Dev

有条件地使用ProxyConnector或HTTPConnector

来自分类Dev

使用hidden属性与有条件地渲染组件

来自分类Dev

如何使用python有条件地修改列表

来自分类Dev

使用`dplyr`有条件地改变列值

来自分类Dev

使用shutil有条件地移动文件

来自分类Dev

如何使用shell管道根据退出代码有条件地显示输出?

来自分类Dev

无法使用基本的 Jenkins 管道步骤有条件地删除工作区中的目录

来自分类Dev

Angular:如何通过在条件中使用日期管道有条件地应用样式?

Related 相关文章

热门标签

归档