【发布时间】:2016-11-02 14:08:23
【问题描述】:
我有一个包含两列的 data.frame:ID 和 Letter。我需要通过ID 总结Letter 的观察结果。
这里是一个例子:
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 这两个函数,但是怎么做呢?
【问题讨论】:
-
为什么
table(df$ID, df$Letter)不够用?它们不会是单独的 data.frames,尽管不清楚为什么需要这样做,而不仅仅是您对输出格式的第一次猜测。 -
如果您需要
data.frames中的list,请尝试library(dplyr);lapply(split(df, df$ID), function(x) count(x, ID, Letter) %>% ungroup() %>% select(-ID)) -
或者只是
lapply(split(df$Letter, df$ID), function(x) as.data.frame(table(factor(x))))没有包 -
看起来是个骗子。
标签: r dataframe count character