我希望计算以下数据集中每个因素的位置:
df <-data.frame(fact=c("a,b", "c,b"))
所以,我理想的输出是这样的:
Factor position1 Position2
a 1 0
b 0 2
c 1 0
例如b
在第二个位置出现了两次。
我所尝试的非常繁琐,我将字符串分成几列,然后一一测量它们的频率:
library(splitstackshape)
df <-cSplit(df,"fact", ",")
table(df$fact_2)
我想知道是否有任何技巧可以让我的工作更轻松?
最佳答案
由于 cSplit
给出了 data.table
作为结果,您可以熔化并转换以更简单的方式获得结果:
dfspl <-cSplit(df,"fact", ",")
dcast(melt(dfspl, measure.vars=names(dfspl)), value ~ variable, fun.agg=length)
# value fact_1 fact_2
#1: a 1 0
#2: b 0 2
#3: c 1 0
关于r - R 中字符串位置的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40985471/