计算数据框中某个char变量的所有字母(26)

时间:2017-10-06 09:40:27

标签: r strsplit

我有一个包含几列的数据框:

Attr    Description
60      asdfg asdg dfs
50      smlefekl dewld ewf
35      kojewdfhef e

我需要的是创建额外的26列,每行包含每个字母的计数。我知道我可以使用:

table(unlist(strsplit(mydata, ""), use.names=FALSE))

对于矢量,但如何更新数据帧呢?

1 个答案:

答案 0 :(得分:0)

如果我们使用strsplit,那么我们可能需要创建一个factorlevels指定为'letters'

d1 <- stack(setNames(strsplit(df1$Description, ""), seq_len(nrow(df1))))
d2 <- subset(d1, values != " ")
d2$values <- factor(d2$values, levels = letters)
t(table(d2))
#   values
# ind a b c d e f g h i j k l m n o p q r s t u v w x y z    
#  1 2 0 0 3 0 2 2 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0
#  2 0 0 0 2 4 2 0 0 0 0 1 3 1 0 0 0 0 0 1 0 0 0 2 0 0 0
#  3 0 0 0 1 3 2 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0

或者如评论中所示,使用str_count中的stringr循环显示“字母”,获取“描述”每行的该字母数量

library(stringr)
t(sapply(letters, function(x) str_count(df1$Description, x)))