【发布时间】:2017-01-01 02:07:15
【问题描述】:
我有 2 个这样的数据框
TEAM <- c("PE","PE","MPI","TDT","HPT","ATD")
CODE <- c(NA,"F","A","H","G","D")
df1 <- data.frame(TEAM,CODE)
CODE <- c(NA,"F100","A234","D664","H435","G123","A666","D345","G324",NA)
TEAM <- c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA)
df2 <- data.frame(CODE,TEAM)
我正在尝试通过将 df1 中的代码列中的第一个字母与 df2 中的代码列匹配来更新 df2 中的 TEAM
我想要的 df2 输出
CODE TEAM
1 NA PE
2 F100 PE
3 A234 MPI
4 D664 ATD
5 H435 TDT
6 G123 HPT
7 A666 MPI
8 D345 ATD
9 G324 HPT
10 NA PE
我正在用 sqldf 尝试这种方式,但它不正确
library(sqldf)
df2 <- sqldf(c("update df2 set TEAM =
case
when CODE like '%F%' then 'PE'
when CODE like '%A%' then 'MPI'
when CODE like '%D%' then 'ATD'
when CODE like '%G%' then 'HPT'
when CODE like '%H%' then 'TDT'
else 'NA'
end"))
有人可以帮我提供一些在没有 sqldf 的情况下实现这一目标的方向吗?
【问题讨论】: