我有以下data.frame,
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
我怎样才能做到这一点?
最佳答案
我们复制 'id' 列使长度与 'city' 列的长度相等,并且 replace
'city' 为 0 到 '0' 的位置
dt2017[3:6] <- replace(matrix(dt2017$id[row(dt2017[3:6])], ncol=4), dt2017[3:6]==0, '0')
dt2017
# 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
关于r - 在 R 中替换列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46679451/