我有一个数据框
Var1 <- c("Hnt_Pri_Pri_Sec_Sup", "Hnt_Sup_Sup_Sec_Sec", "Hnt_Pri_Sec_Pri_Sup")
Var2 <- c("LiG_Pri_Sec_Sec_Sup", "LiG_Sec_Sup_Pri_Sup", "LiG_Pri_Pri_Pri_Pri")
Var3 <- c("Nam_Pri_Pri_Sec_Pri", "Nam_Sec_Sec_Sup_Pri", "Nam_Sup_Pri_Pri_Sec")
df <- data.frame(Var1, Var2, Var3)
> df
Var1 Var2 Var3
1 Hnt_Pri_Pri_Sec_Sup LiG_Pri_Sec_Sec_Sup Nam_Pri_Pri_Sec_Pri
2 Hnt_Sup_Sup_Sec_Sec LiG_Sec_Sup_Pri_Sup Nam_Sec_Sec_Sup_Pri
3 Hnt_Pri_Sec_Pri_Sup LiG_Pri_Pri_Pri_Pri Nam_Sup_Pri_Pri_Sec
其中,我希望对每行计数字符"Pri"出现的次数,并将结果存储在附加列中,使得:
> df
Var1 Var2 Var3 pri_count
1 Hnt_Pri_Pri_Sec_Sup LiG_Pri_Sec_Sec_Sup Nam_Pri_Pri_Sec_Pri 6
2 Hnt_Sup_Sup_Sec_Sec LiG_Sec_Sup_Pri_Sup Nam_Sec_Sec_Sup_Pri 2
3 Hnt_Pri_Sec_Pri_Sup LiG_Pri_Pri_Pri_Pri Nam_Sup_Pri_Pri_Sec 8
如果我对"Sec"执行相同的操作,它应该返回:
> df
Var1 Var2 Var3 pri_count sec_count
1 Hnt_Pri_Pri_Sec_Sup LiG_Pri_Sec_Sec_Sup Nam_Pri_Pri_Sec_Pri 6 4
2 Hnt_Sup_Sup_Sec_Sec LiG_Sec_Sup_Pri_Sup Nam_Sec_Sec_Sup_Pri 2 5
3 Hnt_Pri_Sec_Pri_Sup LiG_Pri_Pri_Pri_Pri Nam_Sup_Pri_Pri_Sec 8 2
我尝试了str_count的不同用法,但无法使其工作。有人能帮忙吗?
2条答案
按热度按时间b4wnujal1#
您可以将
rowSums
与stringr包中的str_count
结合使用,来计算数据框中每行字符串的出现次数。下面是计算“Pri”出现次数的示例:下面是一个计算“Sec”出现次数的示例:
yb3bgrhw2#