【发布时间】:2015-12-24 18:34:57
【问题描述】:
我有一个带有Category 和pd 的数据框。我需要计算每个pd 中每个有意义的单词在每个Category 中出现的次数。我坚持最后一步 - 总结。理想情况下,该频率与pd 的总长度之比Category 将是另一个X 列。
例子:
freq = structure(list(Category = c("C1", "C2"
), pd = c("96 oz, epsom salt 96 oz, epsom bath salt",
"17 x 24 in, bath mat")), .Names = c("Category", "pd"), row.names = c(NA,
-2L), class = "data.frame")
pool = sort(unique(gsub("[[:punct:]]|[0-9]","", unlist(strsplit(freq[,2]," ")))))
pool = pool[nchar(pool)>1]
freq:
Category pd
1 C1 96 oz, epsom salt 96 oz, epsom bath salt
2 C2 17 x 24 in, bath mat
pool:
[1] "bath" "epsom" "in" "mat" "oz" "salt"
期望的输出:
pool C1freq C1ratio C2freq C2ratio
bath 1 1/7 1 1/3
epsom 2 2/7 0 0
in 0 0 1 1/3
mat 0 0 1 1/3
oz 2 2/7 0 0
salt 2 2/7 0 0
在哪里,例如7 是 C1[,2] 的长度,去掉了数字,标点符号(如 pool 规则)。 1/7 在这种形式中当然不是必须的 - 这里只是为了显示分母长度。
如果可能,不要使用 dplyr 或 qdap。谢谢!!
【问题讨论】: