【问题标题】:R purrr map2 to change column name - problem with spacing in column nameR purrr map2 更改列名 - 列名中的间距问题
【发布时间】:2019-04-03 10:17:52
【问题描述】:

我正在处理来自外部来源的一些数据,这些数据在其变量名称之一(“伪 ID”)中带有空格。我正在尝试使用 purrr::map 在所有数据集中更改此变量名称,但 R 似乎无法识别此变量。我不想一个一个地更改变量名...不知道是否有人可以找到解决方案?

    library(tidyverse)

    # Mock data:
    set.seed(1)
    sampledata<- data.frame(
         ID = sample(1:2), 
         name = sample(letters, 2, replace = TRUE))
    colnames(sampledata)[1] <- "Pseudo ID"

    # List of mock data:
    datalist <- list(sampledata, sampledata)

    # Set name in each dataset in the list using map
    map(datalist, set_names, nm="PatientID") # BUT HOW CAN I RENAME A SPECIFIC COLUMN - 'Pseudo ID'

【问题讨论】:

    标签: r rename purrr


    【解决方案1】:

    您可以在此处使用purrr 中的mapset_names

    set.seed(1)
    sampledata<- data.frame(ID = sample(1:2), name = sample(letters, 2, replace = TRUE))
    colnames(sampledata)[1] <- "Pseudo ID"
    datalist <- list(sampledata, sampledata)
    
    library(purrr)
    map(datalist, ~ set_names(.x, nm = replace(
      names(.x), names(.x) == "Pseudo ID", "PatientID"
    )))
    #[[1]]
    #  PatientID name
    #1         1    o
    #2         2    x
    
    #[[2]]
    #  PatientID name
    #1         1    o
    #2         2    x
    

    如果要分配不同的名称,请使用map2

    new_id_names <- c("PatientID_1", "PatientID_2")
    map2(.x = datalist, .y = new_id_names, ~ set_names(.x, nm = replace(
      names(.x), names(.x) == "Pseudo ID", .y
    )))
    

    【讨论】:

    • sampledata中除了“Pseudo ID”还有其他变量,不知道有没有办法指定?
    • @Dani 你能更新你的问题并举一个最小的例子吗?
    • 嗨,markus,谢谢 - 请更新我的问题
    • @Dani 更新了我的答案。让我知道它现在是否正常工作。
    • 您好,markus,它运行良好。 purrr 包看起来很强大,但我仍然很难理解它。非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2019-09-11
    • 2017-03-30
    • 1970-01-01
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    相关资源
    最近更新 更多