-2

私はdata.tableが初めてで、2つの列で同じ値を持つテーブルの行数を見つけようとしています。結果のテーブルには、同じキーの組み合わせを含む複数の行がありました。誰かが私が間違っていることを手伝ってくれますか?

labs_raw_df <- data.table(labs_raw)
setkey(labs_raw_df, NAT, LAB_TST_AN_LAB_TST_CD)
lab_pt_count <- labs_raw_df[,
list(n=.N)
  ,by=list(NAT, LAB_TST_AN_LAB_TST_CD)]

どちらの列も文字です。

4

1 に答える 1

1

これはコメントには長すぎるため、回答を書きます。

data.table 1.8.6 を使用していると仮定します。

ダミーデータを作成しましょう。

set.seed(42)
labs_raw_df <- data.frame(NAT=sample(c("A","B","C"),20,TRUE),
                          LAB_TST_AN_LAB_TST_CD=sample(c("A","B","C"),20,TRUE),
                          value=sample(0:1,20,TRUE))

今あなたのコード(命名のいくつかのマイナーな修正を含む):

library(data.table)
labs_raw_dt <- data.table(labs_raw_df)
setkey(labs_raw_dt, NAT, LAB_TST_AN_LAB_TST_CD)
lab_pt_count <- labs_raw_dt[,
                            list(n=.N),
                            by=list(NAT, LAB_TST_AN_LAB_TST_CD)]
print(lab_pt_count)

   NAT LAB_TST_AN_LAB_TST_CD n
1:   A                     A 1
2:   A                     C 3
3:   B                     A 2
4:   B                     B 3
5:   B                     C 2
6:   C                     A 2
7:   C                     B 2
8:   C                     C 5

これは期待される結果です。それがあなたの期待をどのように満たしていないかについて詳しく説明できますか?

もちろん、少し単純化できます。

lab_pt_count <- labs_raw_dt[,
                            .N,
                            by=key(labs_raw_dt)]
print(lab_pt_count)

   NAT LAB_TST_AN_LAB_TST_CD N
1:   A                     A 1
2:   A                     C 3
3:   B                     A 2
4:   B                     B 3
5:   B                     C 2
6:   C                     A 2
7:   C                     B 2
8:   C                     C 5

しかし、結果は同じです。

于 2013-01-06T10:27:49.810 に答える