2

次の形式の参照テーブルまたはルックアップ テーブルとして使用したいデータ フレーム (ラベル) があります。

V1  V2
1   1   WALKING
2   2   WALKING_UPSTAIRS
3   3   WALKING_DOWNSTAIRS
4   4   SITTING
5   5   STANDING
6   6   LAYING

参照テーブルを使用するデータ フレームは (test, ncol = 564, nrow = 2947) で、最初の 3 つの colnames は (test_subject, test_label(num 1-6), data_set) であり、test_label(1-6) は参照される文字列に等しいその上。

ルックアップテーブルを使用して「activity_label」という新しい列を挿入する方法を誰かが教えてくれませんか?その列の各観測値は、参照テーブルから参照された番号に相当する文字列に対応します。

たとえば、test_label の行 1 が 5 の場合、activity_label の行 1 は「立っている」となります。

ご協力ありがとうございました。

#

マージ方法を使用した後:

> test2[1:10, 564: 565]
   angle(Z,gravityMean) activity_label
1            0.04404283        walking
2            0.04134032        walking
3            0.04295217        walking
4            0.03611571        walking
5           -0.09080307        walking
6           -0.08602478        walking
7           -0.07997668        walking
8            0.04372663        walking
9            0.19900166        walking
10           0.20350821        walking

残りの dfs の構造を分析する

> str(test1)
'data.frame':   2947 obs. of  565 variables:
 $ test_labels                         : int  1 1 1 1 1 1 1 1 1 1 ...
 $ test_subject                        : int  12 12 12 12 4 4 4 12 9 9 ...
 $ observ_set                          : Factor w/ 1 level "test": 1 1 1 1 1 1 1 1 1 1 ...
 $ tBodyAcc-mean()-X                   : num  0.228 0.303 0.237 0.306 0.29 ...

> str(train1)
'data.frame':   7352 obs. of  565 variables:
 $ train_labels                        : int  1 1 1 1 1 1 1 1 1 1 ...
 $ V1                                  : int  27 7 7 26 7 26 6 6 6 7 ...
 $ observ_set                          : Factor w/ 1 level "train": 1 1 1 1 1 1 1 1 1 1 ...
 $ tBodyAcc-mean()-X                   : num  0.262 0.354 0.344 0.292 0.314 ...
4

2 に答える 2

0

私は次のようにします。マッピングは 'test_label' と 'id' によって行われ、merge(). すべての値を に保持する場合はdf、 を使用しますall.x = T。それ以外の場合は削除します。

set.seed(1237)
lookup <- data.frame(id = 1:6, activity = LETTERS[1:6])
df <- data.frame(test_label = sample(1:6, 10, replace = T))
merge(df, lookup, by.x = "test_label", by.y ="id", all.x = T)

test_label activity
1           1        A
2           1        A
3           2        B
4           2        B
5           3        C
6           5        E
7           5        E
8           6        F
9           6        F
10          6        F
于 2015-05-02T05:33:10.830 に答える