【发布时间】:2018-08-14 05:42:31
【问题描述】:
我想知道执行一个简单函数的最简单方法,其目的是:
- 我想使用来自第二个数据帧的 ID* 过滤第一个数据帧。
- 我还想在第二列的过滤数据中添加一个新列,该列对应于它所链接的 ID*。
我提供了一个示例代码,其中 maindata 是主要数据,来自 subdata 的 Age* 必须添加到 maindata,同时仅过滤子数据中存在的 IDs* 以获得数据框带有 ID、姓名和年龄。这个最终的数据框被命名为finaldata
示例代码:
library(dplyr)
maindata = data.frame(ID=c(1:10), Name=c("a","b","c","d","e","f","g","h","i","j"))
subdata = data.frame(ID=c(1,3,6,2,7), Age=c(26,34,33,55,21))
#This is what I would like to have
finaldata = data.frame(ID=c(1,3,6,2,7), Name=c("a","c","f","b","7"), Age=c(26,34,33,55,21))
# I've tried using dplyr with no luck, This must be very basic :(
finaldata = maindata %>%
filter(ID %in% subdata$ID) %>%
mutate(Age=subdata$Age)
*示例中的标题名称
【问题讨论】:
-
subdata$Name <- maindata$Name[match(subdata$ID, maindata$ID)] -
merge(maindata, subdata, by="ID", all.y=TRUE)