在data.frame中按组计算字符值

时间:2016-11-02 14:08:24

标签: r dataframe count character

我有一个包含两列的data.frame:IDLetter。我需要通过Letter总结ID观察结果。

这是一个例子:

df = read.table(text = 'ID Letter 
1   A
1   A
1   B
1   A
1   C
1   D
1   B
2   A
2   B
2   B
2   B
2   D
2   F
3   B
3   A
3   A
3   C
3   D, header = TRUE)

我的输出应该是3个data.frames,如下所示:

df_1

A  3
B  2
C  1
D  1

df_2

A  1
B  3
D  1
F  1 

df_3

A  2
B  1
C  1
D  1

这只是每个ID组中字母的计数。我想我可以使用函数tableaggregate的组合,但是如何?

2 个答案:

答案 0 :(得分:0)

感谢@akrun,请看下面我是如何设法解决的:

#create list of data.frames 

library(dplyr)

lst = lapply(split(df, df$ID), function(x) count(x, ID, Letter) %>% ungroup() %>% select(-ID))

lst = lapply(lst, function(y) y = as.data.frame(y)) #convert data into data.frames

答案 1 :(得分:0)

这也适用(使用基础R):

lapply(split(df, df$ID), function(x) subset(as.data.frame(table(x$Letter)), Freq != 0))