次の形式の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")
一方の列の行に。があるNA
場合、もう一方の列にはNA
。があります。の数値column1
は一意のグループを表し1
ます。たとえば、行2〜4にはグループがあります。この列でcolumn2
は、このグループのIDについて説明します。このデータフレームでは、アイデンティティーのいずれかであるA
、B
、C
、またはD
。
私の目標は、データフレーム全体内のグループごとのIDの数を集計することです。つまり、Aグループの数、Bグループの数などです。
このファイルの正しい出力(これまでのところ)は、2つのAグループと1つのBグループがあります。
これをどのように計算しますか?
現時点では、次のようなことを試してみます。
length(df[df$column2 == "B"]) ## outputs 2
しかし、これは正しくありません。を組み合わせcolumn1
てcolumn2
、一意の値1A、2B、3Aのみを取得した場合、各ラベルが何回column2
発生するかを数えることができると思いますか?
(簡単な場合はdata.table
、このタスクに使用できます。)
rle
実行とtable
集計に使用できます。
table(rle(df$column2)$values)
# A B
# 2 1
詳細については?rle
、?table
を参照してください。
または、column1
(から派生したcolumn2
)を利用したい場合:
table(unique(df)$column2)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加