这是我想要的输出:
<div class='not-others-div'>
text text [make-this-class] text
</div>
Text text text
<div class='this-div-only'> <!-- this div only -->
text text [make-this-class] text
</div>
嗨,我的数据框有一个&#34; String&#34;如上所述。我想添加一个列&#34; numSubStrings&#34;其中包含由&#34;;&#34;分隔的子串数。 in&#34; String&#34;。
我试过了
> head(df)
String numSubStrings
1 1 1
2 1 1
3 1;1;1;1 4
4 1;1;1;1 4
5 1;1;1 3
6 1 1
在numSubStrings中给我1s。
请指教。 感谢。
答案 0 :(得分:1)
听起来你正在寻找count.fields
。用法如下:
> count.fields(textConnection(mydf$String), sep = ";")
[1] 1 1 4 4 3 1
您可能需要将mydf$String
打包在as.character
中,具体取决于数据的读取方式或创建方式。
或者,您可以尝试lengths
:
> lengths(strsplit(mydf$String, ";", TRUE))
[1] 1 1 4 4 3 1
答案 1 :(得分:0)
我们可以使用gsub
删除;
以外的所有字符,并使用;
计算nchar
df$numSubStrings <- nchar(gsub('[^;]+', '', df$String))+1
df$numSubStrings
#[1] 1 1 4 4 3 1
或stri_count
中library(stringi)
的其他选项可以计算;
个字符并添加1。
library(stringi)
stri_count_fixed(df$String, ';')+1
#[1] 1 1 4 4 3 1
答案 2 :(得分:0)
您可以使用str_count
包中的stringr
。
x <- " String
1 1
2 1
3 1;1;1;1
4 1;1;1;1
5 1;1;1
6 1 "
df <- read.table(text=x, header=T)
df$numSubStrings <- str_count(df$String, "[^;]+")
df
# String numSubStrings
# 1 1 1
# 2 1 1
# 3 1;1;1;1 4
# 4 1;1;1;1 4
# 5 1;1;1 3
# 6 1 1