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
svar1
中出现的次数
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
svar1
中出现的次数
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$countdf1$countdf1$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!那就更好了!:)