【问题标题】:how to paste column name before each cell in a dataframe如何在数据框中的每个单元格之前粘贴列名
【发布时间】:2019-04-10 10:11:52
【问题描述】:

我有一个如下的数据框:

structure(list(PatientName = c("Tom Hardy", "Elma Fudd", "Bingo Man"
), HospitalNumber = c("H55435", "Y3425345", "Z343424"), Text = c("All bad. Not good", 
"Serious issues", "from a land far away"
)), class = "data.frame", row.names = c(NA, -3L))

这个数据框实际上来自一个原始数据集,其中所有列都以列标题作为分隔符合并如下:

c("PatientName Tom Hardy HospitalNumber H55435 Text All bad. Not good", 
"PatientName Elma Fudd HospitalNumber Y3425345 Text  Serious issues", 
"PatientName Bingo Man HospitalNumber Z343424 Text  from a land far away"
)

如何使用分隔符作为列名进行重构,以便最终得到:

structure(list(X1_X2_X3 = c("PatientName Tom Hardy_HospitalNumber H55435_Text All bad. Not good", 
"PatientName Elma Fudd_HospitalNumber Y3425345_Text Serious issues", 
"PatientName Bingo Man_HospitalNumber Z343424_Text from a land far away"
)), class = "data.frame", row.names = c("X1", "X2", "X3"))

目前我正在执行以下操作,但似乎有点混乱。有没有更简洁的方法?

    Interim<-data.frame(t(data.frame(apply(myDeets, 1, function(x) paste(names(x),x)))),stringsAsFactors = FALSE)
mynesdf<-tidyr::unite_(Interim, paste(colnames(Interim), collapse="_"), colnames(Interim))

【问题讨论】:

    标签: r


    【解决方案1】:

    我们将paste对应的列名与使用Map的列合并起来

    v1 <- do.call(paste, c(Map(paste, names(df1), df1), sep="_"))
    data.frame(X1_X2_X3 = unname(v1))
    
    #                                                             X1_X2_X3
    #1     PatientName Tom Hardy_HospitalNumber H55435_Text All bad. Not good
    #2      PatientName Elma Fudd_HospitalNumber Y3425345_Text Serious issues
    #3 PatientName Bingo Man_HospitalNumber Z343424_Text from a land far away
    

    或者另一种选择是stack 然后paste

    v2 <- with(stack(df1), paste(ind, values))
    unname(tapply(v2, rep(seq_len(nrow(df1)), nrow(df1)), FUN = paste, collapse= "_"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 2018-02-28
      • 2018-06-14
      • 1970-01-01
      • 2018-03-22
      相关资源
      最近更新 更多