R 计算另一个数据帧中的行数

R 计算另一个数据帧中的行数,r,merge,count,tidyverse,R,Merge,Count,Tidyverse,我有两个数据帧df1和df2: df1 <- data.frame(id=1:5, var1=c("c3e", "d3r", "ff2", "dfl", "df4")) df2 <- data.frame(id=1:10, var1=c("d3r", "d3r", "c3e", "dfl", "dfl", "dfl", "c3e", "df4", "c3e", "c3e")) df1我们可以遍历df1$var1的每个值,并计算该值在df2svar1中出现的次数 df1$count

我有两个数据帧
df1
df2

df1 <- data.frame(id=1:5, var1=c("c3e", "d3r", "ff2", "dfl", "df4"))
df2 <- data.frame(id=1:10, var1=c("d3r", "d3r", "c3e", "dfl", "dfl", "dfl", "c3e", "df4", "c3e", "c3e"))

df1我们可以遍历
df1$var1
的每个值,并计算该值在
df2
s
var1
中出现的次数

df1$count <- sapply(df1$var1, function(x) sum(df2$var1 %in% x))

df1
#  id var1 count
#1  1  c3e     4
#2  2  d3r     2
#3  3  ff2     0
#4  4  dfl     3
#5  5  df4     1

df1$count我们可以遍历
df1$var1
的每个值,并计算该值在
df2
s
var1
中出现的次数

df1$count <- sapply(df1$var1, function(x) sum(df2$var1 %in% x))

df1
#  id var1 count
#1  1  c3e     4
#2  2  d3r     2
#3  3  ff2     0
#4  4  dfl     3
#5  5  df4     1

df1$count
df1$count
df1$count这里有一个带有
数据的选项。表

library(data.table)
setDT(df1)[setDT(df2)[df1, .N,  on = .(var1), by = .EACHI],
                 count := N , on = .(var1)]
df1
#   id var1 count
#1:  1  c3e     4
#2:  2  d3r     2
#3:  3  ff2     0
#4:  4  dfl     3
#5:  5  df4     1

这里有一个带有
data.table的选项

library(data.table)
setDT(df1)[setDT(df2)[df1, .N,  on = .(var1), by = .EACHI],
                 count := N , on = .(var1)]
df1
#   id var1 count
#1:  1  c3e     4
#2:  2  d3r     2
#3:  3  ff2     0
#4:  4  dfl     3
#5:  5  df4     1

c3e
出现4次,不?圈,不尊重订单。合并更安全,即,
merge(df1,as.data.frame(table(df2$var1)),by.x=“var1”,by.y=“var1”,all.x=TRUE)
c3e
出现4次,没有?@LAP,这将不尊重顺序。合并更安全,即
合并(df1,as.data.frame(table(df2$var1)),by.x=“var1”,by.y=“var1”,all.x=TRUE)
另一种可能性:
表(factor(df2$var1,levels=df1$var1))
谢谢@Jaap!那就更好了!:)另一种可能性:
table(factor(df2$var1,levels=df1$var1))
谢谢@Jaap!那就更好了!:)