Sha*_*ang 2 r count dataframe data.table
我有一个具有以下格式的 R 数据框:
column1 column2
NA NA
1 A
1 A
1 A
NA NA
NA NA
2 B
2 B
NA NA
NA NA
3 A
3 A
3 A
df = structure(list(column1 = c(NA, 1L, 1L, 1L, NA, NA, 2L, 2L, NA,
NA, 3L, 3L, 3L), column2 = c(NA, "A", "A", "A", NA, NA, "B",
"B", NA, NA, "A", "A", "A")), .Names = c("column1", "column2"
), row.names = c(NA, -13L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
如果一列中的行具有NA
,则另一列也具有NA
。中的数值column1
描述了一个唯一的组,例如第2-4行有组1
。该列column2
描述了该分组的标识。在此数据框中,标识为A
、B
、C
或D
。
我的目标是统计整个数据框中按组划分的身份数量:有多少个 A 组,有多少个 B 组等。
该文件的正确输出(到目前为止)是有 2 个 A 组和 1 个 B 组。
我该如何计算这个?
目前,我会尝试这样的事情:
length(df[df$column2 == "B"]) ## outputs 2
Run Code Online (Sandbox Code Playgroud)
但这是不正确的。如果我组合column1
和column2
,只取唯一值 1A、2B、3A,我想我可以计算出每个标签出现了多少次column2
?
(如果更容易,我很乐意用于data.table
此任务。)
您可以用于rle
运行和table
制表:
table(rle(df$column2)$values)
# A B
# 2 1
Run Code Online (Sandbox Code Playgroud)
详情请参阅?rle
和。?table
或者,如果您想利用column1
(源自column2
):
table(unique(df)$column2)
Run Code Online (Sandbox Code Playgroud)