【发布时间】:2016-03-01 03:38:10
【问题描述】:
我已经阅读了 R 中的 excel 文件,其中 sheet1 有 51500 行和 5 列,而 sheet 2 有买家的用户 ID(只有一列)。 目标:旨在提取 sheet_1 中 User Id 出现在 sheet 2 中的用户。 这是两个示例输入文件和所需的输出:
df <- data.frame(User.ID=c(12: 17), Group="Test", Spend=c(15:20), Purchase=c(5:10))
df
User.ID Group Spend Purchase
1 12 Test 15 5
2 13 Test 16 6
3 14 Test 17 7
4 15 Test 18 8
5 16 Test 19 9
6 17 Test 20 10
hash.ID <- data.frame(User.ID= c(13:16))
User.ID
1 13
2 14
3 15
4 16
desired output :
User.ID Group Spend Purchase Redem_Status
1 12 Test 15 5 Test_NonRedeemer
2 13 Test 16 6 Test_Redeemer
3 14 Test 17 7 Test_Redeemer
4 15 Test 18 8 Test_Redeemer
5 16 Test 19 9 Test_Redeemer
6 17 Test 20 10 Test_NonRedeemer
根据上面的例子,我们可以看到如果df中的用户ID存在于hash.ID表中,那么我们添加新列并将其标记为Test_Redeemer,否则将其标记为Test_NonRedeemer。有什么直接的方法可以完成这项任务吗?非常感谢!!
【问题讨论】:
-
或者(好像所有数据都已包含在 f2 中),f2[f2$status=="pass",]
-
@Heroka:谢谢。但是,需要澄清的是,在我的玩具示例中,f1 只是 stdId 列,而 f2 是整个表,其中还包括 f1 中的一些 stdId。所以根据 f1 中的 stdId,找出 f2 中的哪个实例是“通过”的。谢谢
-
您说要提取未通过测试的学生,但您想要的输出只显示通过的学生?
-
@RomanLuštrik:我已经更新了我的帖子。你能给我一些想法如何在 R 中解决这个问题吗?
-
sheet_1[sheet1[, "User ID"] %in% sheet_2, ]呢?