我有一个数据框(标签),我想用它作为表格的参考或查找表:
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),其中前三个名称是(test_subject,test_label(num 1-6),data_set),其中test_label(1-6)等于上面引用的字符串。
有人可以帮我弄清楚如何使用我的查找表插入名为" activity_label"的新列。并且该列的每个观察对应于参考表中引用数字的等效字符串。
例如,如果test_label第1行等于5,那么activity_label第1行将等于" Standing"
非常感谢您的帮助!
使用合并方法后:
> 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
> 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 ...
答案 0 :(得分: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