如果第二个字段中的值大于或等于数字(R),则修改字段中的字符串

如果第二个字段中的值大于或等于数字(R),则修改字段中的字符串,r,regex,if-statement,R,Regex,If Statement,我有一个数据框,其中一个字段包含一个名称字符串($LeftofEx)。在第二个字段($spaces.left)中,我计算了每个字符串中的空格数,我将其用作名称数的代理。我要做的是处理任何具有三个或更多名称的字符串(即$LeftofEx)≥3) 取第一个名称,添加“&al.”,并将其记录在一个新列中,并按原样记录只有一个或两个名称的任何字符串 输入数据示例: author1 <- data.frame(LeftofEx = c('Sleepy.DW., Sneezy, D.W. Grumpy

我有一个数据框,其中一个字段包含一个名称字符串($LeftofEx)。在第二个字段($spaces.left)中,我计算了每个字符串中的空格数,我将其用作名称数的代理。我要做的是处理任何具有三个或更多名称的字符串(即$LeftofEx)≥3) 取第一个名称,添加“&al.”,并将其记录在一个新列中,并按原样记录只有一个或两个名称的任何字符串

输入数据示例:

author1 <- data.frame(LeftofEx = c('Sleepy.DW., Sneezy, D.W. Grumpy & Bashf.','Sleeping.B.','','Sneezy & D.R.Doc','','Bashf., D.R.Doc, Sneezy, Sleeping.B., W.W.Apple, Dopey & Grumpy.M.E.'),spaces.left = c(4,0,0,2,0,7))

author1这里有一个
base r
解决方案:

author1$curtailed <- ifelse(
  author1$spaces.left > 2, 
  paste(strsplit(author1$LeftofEx, ", ")[[1]][1], "& al."), 
  author1$LeftofEx
)
author1
#>                                                               LeftofEx spaces.left
#> 1                             Sleepy.DW., Sneezy, D.W. Grumpy & Bashf.           4
#> 2                                                          Sleeping.B.           0
#> 3                                                     Sneezy & D.R.Doc           2
#> 4 Bashf., D.R.Doc, Sneezy, Sleeping.B., W.W.Apple, Dopey & Grumpy.M.E.           7
author1$缩减2,
粘贴(strsplit(author1$LeftofEx,“,”[1]][1],“&al”),
author1$LeftofEx
)
作者1
#>LeftofEx空格
#>1.困倦、打喷嚏、脾气暴躁和巴什夫。4.
#>2.睡觉。0
#>3斯基尼和D.R.Doc 2
#>Bashf,D.R.Doc,打喷嚏,睡懒觉,W.W.Apple,昏昏欲睡,脾气暴躁。7.
我的第四个条目和第一个条目都是“Sleepy.DW&al.”(即,似乎只是重复了一遍)。另外,当我将脚本应用于整个数据集时,所有的“&al.”都是“NA$al”。(可能是因为在相关的空格左栏中有一些行的LeftofEx和0项为空?——我已经更新了玩具数据集以反映这一点)。有什么想法吗?
author1$curtailed <- ifelse(
  author1$spaces.left > 2, 
  paste(strsplit(author1$LeftofEx, ", ")[[1]][1], "& al."), 
  author1$LeftofEx
)
author1
#>                                                               LeftofEx spaces.left
#> 1                             Sleepy.DW., Sneezy, D.W. Grumpy & Bashf.           4
#> 2                                                          Sleeping.B.           0
#> 3                                                     Sneezy & D.R.Doc           2
#> 4 Bashf., D.R.Doc, Sneezy, Sleeping.B., W.W.Apple, Dopey & Grumpy.M.E.           7