【问题标题】:How do I replace specific values in dataframe colum with other specific values through a loop in R如何通过 R 中的循环将数据框列中的特定值替换为其他特定值
【发布时间】:2021-03-23 18:46:35
【问题描述】:

我正在尝试通过循环将数据框中的特定值替换为特定值。我对 R 的世界有点陌生,但我有点卡住了:

top200$track.id[top200$track.id == "7ytR5pFWmSjzHJIeQkgog4"] <-
  "4Aykm3xrOFSHrAnv80KUhh"
top200$track.id[top200$track.id == "6thXB4RmajS4oZPNiBAKy0"] <-
  "3m0y8qLoznUYi73SUBP8GI"
top200$track.id[top200$track.id == "6OqrJqDMu15AGJHJazg9Nr"] <-
  "463CkQjx2Zk1yXoBuierM9"
top200$track.id[top200$track.id == "1rgnBhdG2JDFTbYkYRZAku"] <-
  "5ZULALImTm80tzUbYQYM9d"
top200$track.id[top200$track.id == "3apeXzypBMnUfYcZYNX6DH"] <-
  "37ZtpRBkHcaq6hHy0X98zn"
top200$track.id[top200$track.id == "6gBFPUFcJLzWGx4lenP6h2"] <-
  "2SzjMcZIsE2zUWQnccsTAo"
top200$track.id[top200$track.id == "513JwqDfENCJ0Woi0T42qy"] <-
  "6hci8n9UowepjRmCc6CKTv"
top200$track.id[top200$track.id == "13vDU8nPsvTGEVTMB8Vw7g"] <-
  "6AzKhCHOms83jvNVLsz0Bt"
top200$track.id[top200$track.id == "30VrBsh1STRBoIrhQOAwzK"] <-
  "2VOomzT6VavJOGBeySqaMc"
top200$track.id[top200$track.id == "79s5XnCN4TJKTVMSmOx8Ep"] <-
  "6PnTgx9lyvLGIcPnroCvc2"
top200$track.id[top200$track.id == "6i7zAdNhzUN2k1HcrBxPHG"] <-
  "14ngWWxvUSnIMXgF6rzSk1"
top200$track.id[top200$track.id == "1RSzyxqtIO4yX3EyiV4zT5"] <-
  "5vGLcdRuSbUhD8ScwsGSdA"
top200$track.id[top200$track.id == "4u7EnebtmKWzUH433cf5Qv"] <-
  "7tFiyTwD0nx5a1eklYtX2J"
top200$track.id[top200$track.id == "0jT8Nl0shPS8115is0wD2Q"] <-
  "0Snbzbd74RLfL0i4nn1vU5"
top200$track.id[top200$track.id == "3xgT3xIlFGqZjYW9QlhJWp"] <-
  "6Qs4SXO9dwPj5GKvVOv8Ki"
top200$track.id[top200$track.id == "24IgCW19L8lXKyFZwzFtD3"] <-
  "14wf185UxfNbSy8dwt4r4q"
top200$track.id[top200$track.id == "2xLMifQCjDGFmkHkpNLD9h"] <-
  "0u695M7KyzXaPIjpEbxOkB"

这是我在查看其他示例时得到的,但它仍然没有真正起作用。有关如何执行此操作的任何建议?

new_values <- c("4Aykm3xrOFSHrAnv80KUhh","3m0y8qLoznUYi73SUBP8GI","463CkQjx2Zk1yXoBuierM9","5ZULALImTm80tzUbYQYM9d","37ZtpRBkHcaq6hHy0X98zn","2SzjMcZIsE2zUWQnccsTAo","6hci8n9UowepjRmCc6CKTv","6AzKhCHOms83jvNVLsz0Bt","2VOomzT6VavJOGBeySqaMc","6PnTgx9lyvLGIcPnroCvc2","14ngWWxvUSnIMXgF6rzSk1","5vGLcdRuSbUhD8ScwsGSdA","7tFiyTwD0nx5a1eklYtX2J","0Snbzbd74RLfL0i4nn1vU5","6Qs4SXO9dwPj5GKvVOv8Ki","14wf185UxfNbSy8dwt4r4q","0u695M7KyzXaPIjpEbxOkB")

old_values <- c("7ytR5pFWmSjzHJIeQkgog4","6thXB4RmajS4oZPNiBAKy0","6OqrJqDMu15AGJHJazg9Nr","1rgnBhdG2JDFTbYkYRZAku","3apeXzypBMnUfYcZYNX6DH","6gBFPUFcJLzWGx4lenP6h2","513JwqDfENCJ0Woi0T42qy","13vDU8nPsvTGEVTMB8Vw7g","30VrBsh1STRBoIrhQOAwzK","79s5XnCN4TJKTVMSmOx8Ep","6i7zAdNhzUN2k1HcrBxPHG","1RSzyxqtIO4yX3EyiV4zT5","4u7EnebtmKWzUH433cf5Qv","0jT8Nl0shPS8115is0wD2Q","3xgT3xIlFGqZjYW9QlhJWp","24IgCW19L8lXKyFZwzFtD3","2xLMifQCjDGFmkHkpNLD9h")


for i in top200$track.id {
  if top200$track.id[i] %in% old_values {
    old_values[i] <- new_values[i]
  }
}

【问题讨论】:

    标签: r dataframe loops if-statement vector


    【解决方案1】:

    您不需要循环。如果需要,可以使用 new_values 覆盖数据框中的 old_values,然后不存储原始值。

    new_values <- c("4Aykm3xrOFSHrAnv80KUhh","3m0y8qLoznUYi73SUBP8GI","463CkQjx2Zk1yXoBuierM9","5ZULALImTm80tzUbYQYM9d","37ZtpRBkHcaq6hHy0X98zn","2SzjMcZIsE2zUWQnccsTAo","6hci8n9UowepjRmCc6CKTv","6AzKhCHOms83jvNVLsz0Bt","2VOomzT6VavJOGBeySqaMc","6PnTgx9lyvLGIcPnroCvc2","14ngWWxvUSnIMXgF6rzSk1","5vGLcdRuSbUhD8ScwsGSdA","7tFiyTwD0nx5a1eklYtX2J","0Snbzbd74RLfL0i4nn1vU5","6Qs4SXO9dwPj5GKvVOv8Ki","14wf185UxfNbSy8dwt4r4q","0u695M7KyzXaPIjpEbxOkB")
    old_values <- c("7ytR5pFWmSjzHJIeQkgog4","6thXB4RmajS4oZPNiBAKy0","6OqrJqDMu15AGJHJazg9Nr","1rgnBhdG2JDFTbYkYRZAku","3apeXzypBMnUfYcZYNX6DH","6gBFPUFcJLzWGx4lenP6h2","513JwqDfENCJ0Woi0T42qy","13vDU8nPsvTGEVTMB8Vw7g","30VrBsh1STRBoIrhQOAwzK","79s5XnCN4TJKTVMSmOx8Ep","6i7zAdNhzUN2k1HcrBxPHG","1RSzyxqtIO4yX3EyiV4zT5","4u7EnebtmKWzUH433cf5Qv","0jT8Nl0shPS8115is0wD2Q","3xgT3xIlFGqZjYW9QlhJWp","24IgCW19L8lXKyFZwzFtD3","2xLMifQCjDGFmkHkpNLD9h")
    
    top200 <- data.frame('a_column' = NA, old_values, check.names = F)
    top200 <- rbind(top200, rnorm(2))
    
    index <- top200$old_values %in% old_values
    
    top200$old_values_replaced[index] <- new_values 
    
    > head(top200)
      a_column             old_values    old_values_replaced
    1       NA 7ytR5pFWmSjzHJIeQkgog4 4Aykm3xrOFSHrAnv80KUhh
    2       NA 6thXB4RmajS4oZPNiBAKy0 3m0y8qLoznUYi73SUBP8GI
    3       NA 6OqrJqDMu15AGJHJazg9Nr 463CkQjx2Zk1yXoBuierM9
    4       NA 1rgnBhdG2JDFTbYkYRZAku 5ZULALImTm80tzUbYQYM9d
    5       NA 3apeXzypBMnUfYcZYNX6DH 37ZtpRBkHcaq6hHy0X98zn
    6       NA 6gBFPUFcJLzWGx4lenP6h2 2SzjMcZIsE2zUWQnccsTAo
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-19
      • 2020-04-14
      • 2019-12-26
      • 2021-08-06
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多