R:再次出现数字时如何获取Row sequential ID?

标签 r

例如,我有一个这样的数据框,每一行没有重复的数字,数字按每一行排序。

  W1 W2 W3 W4
1  1  3  4  7
2  4  5  6  7
3  1  2  5  8
4  2  5  9  10
5  4  7  10 13
6  1  2  6  9 

我想在 1/2/3.... 出现时获取行 ID,因为第 1、3、6 行中有 1;第 3、4、6 行中有 2 个; 3 仅在第 1 行,...;所以我的结果是这样的

1  1 3 6
2  3 4 6 
3  1 
4  1 2 5
5  2 3 4
......

最佳答案

我会这样做:

split(t(row(df)), unlist(t(df)))

如果您需要显示空关卡:

split(t(row(df)), factor(unlist(t(df)), 1:max(df)))

这应该比循环快很多,例如:

lapply(1:max(df), function(i) which(rowSums(df == i) > 0))

关于R:再次出现数字时如何获取Row sequential ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22468972/

相关文章:

r - 如何在 Shiny 中使用查询参数

c++ - 使用 RcppArmadillo 时无法加载 Armadillo Cube<uword>

r - 如何将标题页和目录页与 knitr rmarkdown PDF 分开?

r - 将 R 中的内容清理为所需的标题

r - 如何使用方差分析分数结果来消除 p 值大于 0.01 的列/预测变量

带有 html 标签的 R Shiny 数据表内容

R:将 dgCMatrix 拆分为训练矩阵和测试矩阵,用于 XGBoost 训练

r - ggplot 两个阴影区域 geom_area

json - 如何在名称/值对中将 R 数据帧转换为 Json?

r - 如何计算R中的月差