假設兩個資料集 A 和 B:
X1<- c('a', 'b','c')
place<-c('andes','brooklyn', 'comorin')
A<-data.frame(X1,place)
X2<-c('a','a','a','b','c','c','d')
place2<-c('andes','alamo','andes','brooklyn','comorin','camden','dover')
B<-data.frame(X2,place2)
我想計算每個單詞A$place出現在B$place2.
uj5u.com熱心網友回復:
一個可能的解決方案:
library(tidyverse)
A %>%
rowwise %>%
mutate(n = sum(place == B$place2)) %>%
ungroup
#> # A tibble: 3 × 3
#> X1 place n
#> <chr> <chr> <int>
#> 1 a andes 2
#> 2 b brooklyn 1
#> 3 c comorin 1
uj5u.com熱心網友回復:
str_detect從stringr包裝中使用。
library(stringr)
sapply(A$place, function(x) sum(str_detect(x, B$place2)))
andes brooklyn comorin
2 1 1
uj5u.com熱心網友回復:
table(B$place2[B$place2 %in% A$place])
# andes brooklyn comorin
# 2 1 1
uj5u.com熱心網友回復:
這是 user438383 答案的基本 R 版本。
sapply(A$place, function(y) sum(grepl(y, B$place2)))
andes brooklyn comorin
2 1 1
關鍵功能是sapply()對向量的所有元素重復操作,grepl()檢查匹配并生成TRUEorFALSE和sum()。當你對一個邏輯向量求和時,你會得到 的計數TRUE。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/448794.html
