我有三个数据框:
df1 <- data.frame(id = c(1,2,3,4,5), var = c(2,4,52,2,5))
df2 <- data.frame(id = c(1,3,4,5,6), var = c(4,5,2,6,2))
df3 <- data.frame(id = c(1,3,5), var = c(31,3,5))
如何使用id列在所有三个数据框中保持在三个数据框中具有相同id的行?
预期输出示例:
df1 <- data.frame(id = c(1,3,5), var = (2,52,5))
df2 <- data.frame(id = c(1,3,5), var = (4,5,6))
df3 <- data.frame(id = c(1,3,5), var = 31,3,5))
我们可以intersect
用来获取所有数据集中的通用“ id”,然后subset
基于“ ids”获取数据集
ids <- Reduce(intersect, list(df1$id, df2$id, df3$id))
df1 <- subset(df1, id %in% ids)
df2 <- subset(df2, id %in% ids)
df3 <- subset(df2, id %in% ids)
此外,所有数据集都可以加载到 list
lst1 <- mget(ls(pattern = "^df\\d+$"))
ids <- Reduce(intersect, lapply(lst1, `[[`, 'id'))
lapply(lst1, subset, id %in% ids)
#$df1
# id var
#1 1 2
#3 3 52
#5 5 5
#$df2
# id var
#1 1 4
#2 3 5
#4 5 6
#$df3
# id var
#1 1 31
#2 3 3
#3 5 5
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句