【发布时间】:2016-03-27 06:31:49
【问题描述】:
给定以下两个示例数据框:
set.seed(2299)
df1 <- data.frame(site = c("site1","site1","site1","site2","site2","site2"),
A0 = rnorm(6),B0 = rnorm(6))
df2 <- data.frame(site = c("site1", "site2"),
A0dir = c(220, 110), B0dir = c(310,200))
我如何使用 df2 中的 A0dir 值,而我正在使用 dplyr 进行变异的行中的 df2$site == df1$site?
以下不起作用。
df1 %>%
mutate(disp = df2$A0dir[site == df2$site] + A0/B0)
以下是"site1" 的正确答案,但我需要它适用于所有网站。
df1 %>%
mutate(disp = df2$A0dir["site1" == df2$site] + A0/B0)
以下两个都产生Error: not compatible with STRSXP
df1 %>%
mutate(disp = subset(df2, site == .$site, select = A0dir))
df1 %>%
mutate(disp = subset(df2, site == "site1", select = A0dir))
实际上,df1 要大得多,我试图避免完成将A0dir 和B0dir 变量从df2 引入df1 的连接。
【问题讨论】:
-
或
df1 %>% left_join(df2) %>% mutate(disp = A0dir + A0/B0)