[英]how to select rows from one data frame based in other data frame R (dplyr)
我有兩個數據框: df1
和df2
ID <- c('PD1', 'PD1', 'PD2', 'PD2')
run <- c('A1', 'A4', 'A6', 'A7')
df <- data.frame(ID=ID, run =run)
name <- c('n1', 'n1', 'n1','n1', 'n1', 'n1')
run <- c('A1', 'A2', 'A3', 'A4', 'A5', 'A6')
value <- c(4.5, 6.7, 0.9, 8.2, 5.7, 9.4)
df2 <- data.frame(name =name, run=run, value = value)
我想根據 df1 中的值對我的 df2 進行子集化以獲得此結果
name run value
n1 A1 4.5
n1 A4 8.2
n1 A6 9.4
我試過這個
NewDataframe <- merge(df2, df1 , by= 'run',all.x=FALSE)
哪個有效,但我只有一個將列保留在df2
有什么建議嗎? 謝謝
嘗試這個:
library(dplyr)
df2 %>%
filter(run %in% df$run)
結果
name run value
1 n1 A1 4.5
2 n1 A4 8.2
3 n1 A6 9.4
在base R
您可以像這樣子集:
df2[which(df2$run %in% df$run),]
name run value
1 n1 A1 4.5
4 n1 A4 8.2
6 n1 A6 9.4
在dplyr
您可以使用left_join
:
left_join(df, df2, by = "run") %>% na.omit(.)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.