我希望计算以下数据集中每个因子的位置:
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)
我想知道是否有任何提示让我的工作更轻松?
答案 0 :(得分:3)
由于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
答案 1 :(得分:1)
以下是NSURLSession
dplyr/tidyr