我有一个包含两列的data.frame:ID
和Letter
。我需要通过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组中字母的计数。我想我可以使用函数table
和aggregate
的组合,但是如何?
答案 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))