我有以下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/

10-12 17:25
查看更多