【发布时间】:2018-07-23 13:32:50
【问题描述】:
我有两个数据框 a 和 b。
a 可以是 2000-3000 行,15 列。
b 是一个小型数据框(2 列,150 行)。
下面是一个简化的数据集。
a <- structure(list(ID = structure(c(1L, 2L, 1L, 3L, 2L, 1L, 3L), .Label = c("ID1",
"ID2", "ID3"), class = "factor"), score = structure(c(4L, 5L,
3L, 6L, 7L, 1L, 2L), .Label = c("10", "110", "20", "28", "34",
"80", "90"), class = "factor"), desc = structure(c(1L, 1L, 1L,
1L, 1L, 1L, 1L), class = "factor", .Label = "text")), .Names = c("ID",
"score", "desc"), row.names = c(NA, -7L), class = "data.frame")
b <- structure(list(ID = structure(1:3, .Label = c("ID1", "ID2", "ID3"
), class = "factor"), cutoff = structure(1:3, .Label = c("12",
"46", "54"), class = "factor")), .Names = c("ID", "cutoff"), row.names = c(NA,
-3L), class = "data.frame")
我想使用数据框 b 中的分数过滤数据框 a。例如,在数据帧 b 中,ID“ID1”的截止值为 12,所以我只想让数据帧 a 中的 ID1 保持在 12 以上或等于 12。我想对所有 IDS 执行此操作。
> a
ID score desc
1 ID1 28 text
2 ID2 34 text
3 ID1 20 text
4 ID3 80 text
5 ID2 90 text
6 ID1 10 text
7 ID3 110 text
> b
ID cutoff
1 ID1 12
2 ID2 46
3 ID3 54
鉴于数据帧 b 中的截止值,最终数据帧 a 应保持如下:
> a
ID score desc
1 ID1 28 text
2 ID1 20 text
3 ID3 80 text
4 ID2 90 text
5 ID3 110 text
【问题讨论】:
-
你试过什么?这是一个简单的合并和过滤问题,请参阅一些教程。另外,请将数字存储为数字。
标签: r