我有一个数据框,看起来像下面这样。
ID<-c('001','002','003','004','005')
TYPE<-c('ABB','BCC','AAA','BBA','BCC')
Group<-c('1','2','2','2','1')
df<-data.frame(ID,TYPE,Group)
df
ID TYPE Group
1 001 ABB 1
2 002 BCC 2
3 003 AAA 2
4 004 BBA 2
5 005 BCC 1
我希望得到一个表格,了解每个组中每个字符的频率及其百分比。
Group
1 2
A 1 4
B 3 3
C 2 2
Total 6 9
它的百分比
Group
1 2
A 0.17 0.44
B 0.50 0.33
C 0.33 0.22
Total% 1.00 1.00
我尝试了以下操作,但出现了错误。
str_count(df$TYPE[(df$Group==1], pattern = "A")
str_count(df$TYPE[(df$Group==2], pattern = "A")
str_count(df$TYPE[(df$Group==1], pattern = "B")
str_count(df$TYPE[(df$Group==2], pattern = "B")
str_count(df$TYPE[(df$Group==1], pattern = "C")
str_count(df$TYPE[(df$Group==2], pattern = "C")
感谢您的提前支持。
class(df$TYPE)
。你错误地将变量编码为因子。当你不将变量用作建模的分类变量时,应该使用stringsAsFactors=FALSE
。 - Pierre Las.character
来解决这个问题,即strsplit(as.character(df$Type), "")
。 - Matthew LundbergsetNames
函数可以使代码更加清晰易懂,例如table(stack(setNames(strsplit(...)
。 - user20650