通常情况下我会用
来做这件事df2 <- subset(df1, df$ID %in% vector)
但这并不能保留重复数据;或
df2 <- df[vector,]
但这并不是将矢量与df$column
仅与行匹配
以下是data.frame
ID Fruit Color
1 2 Apple Amber
2 5 Bannana Blue
3 7 Cherry Cyan
4 9 Date Dandelion
5 14 Elderberry Earth
6 15 Fig Fuchsia
7 21 Grape Green
这是一个样本载体
vector <- c(5,5,5,7,2,14,14,14)
这是我想要的输出
ID Fruit Color
1 5 Bannana Blue
2 5 Bannana Blue
3 5 Bannana Blue
4 7 Cherry Cyan
5 2 Apple Amber
6 14 Elderberry Earth
7 14 Elderberry Earth
8 14 Elderberry Earth
答案 0 :(得分:6)
尝试匹配ID
df[match(vector, df$ID), ]
答案 1 :(得分:2)
将矢量放在数据框中并进行合并:
df2 = data.frame(ID = vector)
df2 = merge(df2, df, by = "ID", sort = FALSE)
输出:
> df2
ID Fruit Color
1 5 Bannana Blue
2 5 Bannana Blue
3 5 Bannana Blue
4 7 Cherry Cyan
5 2 Apple Amber
6 14 Elderberry Earth
7 14 Elderberry Earth
8 14 Elderberry Earth
如果您正在使用dplyr
,那么left_join
似乎也可以正常工作,但保持排序顺序似乎没有记录,所以我不确定它是否可以依赖100%:
df3 = data.frame(ID = vector) %>%
left_join(df, by = "ID")