取代我有以下data.frame,列R中
dt2017 <- data.frame(id=LETTERS[1:4],year=2017,city1=c(0,1,0,1),city2=c(0,0,1,0),
city3=c(1,0,1,0),city4=c(0,0,0,0))
dt2017
id year city1 city2 city3 city4
1: A 2017 0 0 1 0
2: B 2017 1 0 0 0
3: C 2017 0 1 1 0
4: D 2017 1 0 0 0
现在,我要像最后的结果:
id year city1 city2 city3 city4
1: A 2017 0 0 A 0
2: B 2017 B 0 0 0
3: C 2017 0 C C 0
4: D 2017 D 0 0 0
我怎样才能做到这一点?
你可以尝试使用dplyr :: mutate_at与ifelse语句 – Chris
@Chris你为什么要删除u解决方案。它的作用是'dt2017%>%mutate_at(vars(matches('city')),funs(ifelse(。== 1,as.character(dt2017 $ id),0)))' – akrun
我只是想提供建议在评论中,不提供实际的代码。 – Chris