gpt4 book ai didi

r - 需要删除包含 "0"的单元格并保留 R 中的其他单元格

转载 作者:行者123 更新时间:2023-12-04 05:44:35 26 4
gpt4 key购买 nike

我的数据框在单元格中包含“0”值。我需要调出值(字母/非零)及其相应的票号。数据框(m)看起来像:(请注意:列名与其值相似)

       a1   b1  c1  d1  e1  f1  g1  h1  i1  j1  k1  l1
TKT1 a1 b1 0 d1 0 0 0 h1 0 0 k1 0
TKT2 0 b1 0 0 e1 0 g1 h1 0 j1 k1 0
TKT3 a1 0 0 d1 e1 0 g1 h1 i1 0 k1 l1

生成数据集的代码:

#sample data
m <- matrix(sample(0:1, 12*3, replace=T), ncol=12)
colnames(m) <- c("a1", "b1", "c1", "d1", "e1", "f1", "g1", "h1", "i1", "j1", "k1", "l1")
rownames(m) <- c("TKT1","TKT2","TKT3")

#replacement
ones <- which(m==1, arr.ind=T)
m[ones]<-colnames(m)[ones[,2]]
m <- as.data.frame(m)

我想要的输出格式是:

Tickets Values
TKT1 a1
TKT1 b1
TKT1 d1
TKT1 h1
TKT1 k1
TKT2 b1
TKT2 e1
TKT2 g1
TKT2 h1
TKT2 j1
TKT2 k1
TKT3 a1
TKT3 d1
TKT3 e1
TKT3 g1
TKT3 h1
TKT3 i1
TKT3 k1
TKT3 l1

我想到的一种方法是删除数据框中包含 0 的单元格,然后将所有数据向左移动。我不确定如何进行。

最佳答案

这可以在基 r 中用一行来完成:

setNames(expand.grid(dimnames(m))[m != "0",], c("Tickets", "Values"))

expand.grid 给出所有行名和列名的组合,然后 m != "0" 选择不为零的条目。 setNames 为列命名。

关于r - 需要删除包含 "0"的单元格并保留 R 中的其他单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40432677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com