r - R 中字符串位置的频率

标签 r

我希望计算以下数据集中每个因素的位置:

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/

相关文章:

r - R 中的警告 - 做笔记

r - 带 R 的两个变量的多项式回归

python - 如何在Shiny中通过R运行Python文件中的特定函数?

r - 两行带有嵌套 x 变量的轴标签(年份低于月份)

r - 根据序列同时添加多个列

r - 为什么data.table中j中的dput(object)也会打印(object)?

python - 访问 GREL/Open Refine(或 R、Python)中特定值的列名称

r - data.table 中的快速存在

r - 使用 ggplot2 修改点子集的形状

r - 相乘向量组合