gpt4 book ai didi

r - mutate & rowwise & grepl 的替代品

转载 作者:行者123 更新时间:2023-12-05 09:07:23 24 4
gpt4 key购买 nike

我正在处理如下所示的数据框,并想计算 A 列中某些模式(“B”和“C”)的出现次数。

使用 rowwise、mutate 和 grepl 的代码确实有效,但使用 rowwise 的速度非常慢。我想知道是否有任何替代 rowwise 的方法来获得相同的结果?

temp <- data.frame(
A = c('A','B','C','BC')
)

temp %>%
dplyr::rowwise() %>%
mutate( B = sum(grepl(pattern = 'B',A),grepl(pattern = 'C',A) ) )

结果:

# A tibble: 4 x 2
# Rowwise:
A Count
<chr> <int>
1 A 0
2 B 1
3 C 1
4 BC 2

最佳答案

grepl 是矢量化的,问题出在您的 sum 上。使用 + 代替:

temp %>% 
mutate(
Count = grepl(pattern = 'B', A) + grepl(pattern = 'C', A)
)
# A Count
# 1 A 0
# 2 B 1
# 3 C 1
# 4 BC 2

和这个一样的区别:

sum(1:3,  1:3)
# [1] 12

1:3 + 1:3
# [1] 2 4 6

关于r - mutate & rowwise & grepl 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64913481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com