将数据框中的值替换为行名称

标签 r dataframe replace rows

我有一个如下所示的数据框:

         Jill Jimmie Alex Jane 
    Jill   1    0      1    1    
    Jimmie 0    1      1    0    
    Alex   0    1      1    0    
    Jane   1    1      1    0    

我想将每个 1 更改为其对应的行名称,例如:

         Jill Jimmie Alex Jane 
    Jill Jill    0   Jill  Jill  
    Jimmie 0  Jimmie Jimmie 0   
    Alex   0   Alex  Alex   0   
    Jane Jane  Jane  Jane   0  

之后,我想从数据框中删除所有零并向上移动列中的值。

我已经尝试过:

    # for (i in ibm_data){
    #   if (ibm_data == 1){
    #     names <- row.names(i)
    #     ibm_data[ibm_data == 1] <- names
    #   }
    #   else{
    #     ibm_data[ibm_data == 0] <- "NA"
    #   }
    # }

然后我会删除 NA 值,但我认为我让这个变得过于复杂。我计划从名称列表中构建一个强制图表来查看相关性。

最佳答案

我认为这既完成了用 1 填充单元格值的行名,也完成了删除“数据框中的所有零并向上移动列中的值。”

这将返回一个命名列表,其中每个列表元素都是相应的列,值是该列中的值等于 1 的行名。

lapply(dat, function(x) rownames(dat)[x==1])
$Jill
[1] "Jill" "Jane"

$Jimmie
[1] "Jimmie" "Alex"   "Jane"  

$Alex
[1] "Jill"   "Jimmie" "Alex"   "Jane"  

$Jane
[1] "Jill"

关于将数据框中的值替换为行名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45218214/

相关文章:

python - 在两列上使用 loc 来执行替换另一列的值的计算

javascript - 正则表达式适用于 regex101 但不适用于 javascript

javascript 函数替换不起作用,为什么?

r - 在同一个 ggplot 中绘制离散和连续尺度

r - 如何使用 ggplot2 剪切、裁剪或白色填充紧紧包围多边形外部的矩形

python - 模式匹配并用 if else 循环替换字符串

r - 分解 R 包中的 disag_model() 函数存在问题

R rbind 数据帧的数据帧

r - 将数据帧转换为特殊格式的列表以供在函数中使用

javascript - iphone7 js history.replaceState