我有一个如下所示的数据框:
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/