Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 计算预定义分隔符之间的字数_R_String - Fatal编程技术网

R 计算预定义分隔符之间的字数

R 计算预定义分隔符之间的字数,r,string,R,String,在我的案例“/”中,计算预定义分隔符之间的字数的最佳方法是什么 数据集: df <- data.frame(v1 = c('A DOG//1//', 'CAT/WHITE///', 'A HORSE/BROWN & BLACK/2//', 'DOG////')) 预期结果如下所示 2只狗和1只狗 两个是猫和白 3匹棕色和黑色的马,2匹

在我的案例“/”中,计算预定义分隔符之间的字数的最佳方法是什么

数据集:

df <- data.frame(v1 = c('A DOG//1//', 
                        'CAT/WHITE///',
                        'A HORSE/BROWN & BLACK/2//',
                        'DOG////'))
预期结果如下所示

2只狗和1只狗

两个是猫和白

3匹棕色和黑色的马,2匹

1只狗

谢谢大家!

在一个或多个斜杠处strsplit/+并计数字符串

lengths(strsplit(as.character(df$v1), "/+"))
#[1] 2 2 3 1
在一个或多个斜杠处strsplit/+并计数字符串

lengths(strsplit(as.character(df$v1), "/+"))
#[1] 2 2 3 1

假设您的数据不存在字符串a以/开头或b不以/结尾的情况,那么您可以只计算斜杠块的次数,以获得斜杠之间的块数。因此,以下内容适用于您提供的数据

stringr::str_count(df$v1, "/+")

假设您的数据不存在字符串a以/开头或b不以/结尾的情况,那么您可以只计算斜杠块的次数,以获得斜杠之间的块数。因此,以下内容适用于您提供的数据

stringr::str_count(df$v1, "/+")

使用stringr::str_拆分并计算非空字符串的数量

df <- data.frame(v1 = c('A DOG//1//', 
                        'CAT/WHITE///',
                        'A HORSE/BROWN & BLACK/2//',
                        'DOG////'))

sapply(stringr::str_split(df$v1, '/'), function(x) sum(x != ''))

[1] 2 2 3 1

使用stringr::str_拆分并计算非空字符串的数量

df <- data.frame(v1 = c('A DOG//1//', 
                        'CAT/WHITE///',
                        'A HORSE/BROWN & BLACK/2//',
                        'DOG////'))

sapply(stringr::str_split(df$v1, '/'), function(x) sum(x != ''))

[1] 2 2 3 1
在base R中,另一个选项是lengthsgregexpr/+,df$v1在base R中,另一个选项是lengthsgregexpr/+,df$v1